Hej,
w tym poście chciałbym przedstawić wam jak działa kontrola zależności projektu Maven.
Jeżeli nie widziałeś poprzednich postów, to zapraszam [tutaj](https://steemit.com/polish/@grzegorz2047/pl-wstep-do-programowania-w-javie-dla-kompletnych-laikow-12-co-to-jest-interfejs)
No to co to jest ten Maven?
Jest to pewien "program", który dba o to, żeby nasz projekt miał wszelkie potrzebne biblioteki. Biblioteki, czyli zbiory pewnych funkcji, które już ktoś napisał i udostępnił je w formie .jar.
A po co mi jest ten Maven?
Główna zaleta posiadania mavena jest taka, że każdy, kto chce uruchomić projekt na innym komputerze, jest w stanie uruchomić go praktycznie bez żadnego wysiłku.
No fajnie, no spoko, ale jak zatem mogę wykorzystać go w swoim projekcie?
Generalnie, żeby projekt był "kompatybilny" z mavenem, musi posiadać plik "pom.xml". Plik ten opisuje skąd maven ma pobrać biblioteki i jakie konkretnie ma pobrać.
Aby stworzyć taki projekt mavenowy, użyjemy interfejsu graficznego Intellij idea w celu uproszczenia całej procedury.
Pierwsze co robimy, to tworzymy nowy projekt:
Klikamy next i pojawia się takie okno:
w miejscu group id wpisujemy początek jaki używamy w naszym przypadku. W moim przypadku, identyfikatorem projektów jest pl.grzegorz2047.
Może to być com.slodkikotek
bądź inny wasz identyfikator jaki używacie przy tworzeniu package w waszym projekcie. W polu Artifact ID ustalacie nazwę waszego projektu. Po zakończeniu klikamy next.
Ostatnie okienko:
W tym okienku definiujecie nazwę projektu dla Intelij, ale raczej nie trzeba tego zmieniać. Drugie pole, to miejsce gdzie projekt ma zostać zapisany. Można zostawić domyślnie, ale trzeba wiedzieć, gdzie to się zapisze xd
Gdy skończymy, klikamy Finish.
Naszym oczom powinno ukazać się coś takiego:
Po prawej stronie mamy konfigurację naszych zależności w projekcie.
Żeby ten poradnik był ciekawy, podepnijmy bibliotekę SteemJ, która pozwala na uzyskiwanie informacji z blockchainu Steem.
W sumie, to nie jest dobry pomysł, bo nie wykorzystujemy tu nieoficjalnych repozytoriów z bibliotekami. Powodem tego jest to, że SteemJ jest umieszczony w oficjalnym repozytorium mavena i nie trzeba podawać adresu do serwerów maven.
Zależności definiujemy pomiędzy . Pojedyncza zależność definiowana jest pomiędzy
Przykład definicji takich zależności wygląda tak:
Dodałem 3 zależności tj. do obsługi jsona, do obsługi testów jednostkowych oraz do biblioteki steemJ.
Skąd wiadomo jak ma wyglądać definicja takiej zależności?
Wchodząc [tutaj](https://mvnrepository.com/artifact/eu.bittrade.libs/steemj-core), wybierając na wersję 0.4.3 trafimy [tutaj](https://mvnrepository.com/artifact/eu.bittrade.libs/steemj-core/0.4.3)
Powyższy link prowadzi do głównego repozytorium mavena, gdzie można uzyskać informacje o steemJ w wersji 0.4.3. Czyli jak można wpisać zależność do pom.xml.
Na powyższym zrzucie ekranu widzicie też takie coś jak import changes. Każda zmiana pliku pom.xml powoduje potencjalną zmianę zależności projektu. Przez to, IDE potrzebuje zastosowania zmian w pom.xml. Robi to, żeby pobrać biblioteki, które chcemy aby były zawarte w naszym projekcie.
Maven posiada także różne pluginy pozwalające na dodatkowe czynności związane z projektem. Poniżej pokaże wam przykładowy pom.xml projektu. Generalnie nie jestem wstanie wszystkiego opisać dokładnie, ale to nie jest najważniejsze. Najważniejsze jest to, aby być świadomy istnienia czegoś. Dzięki temu wiemy co szukać i potencjalnie wiemy gdzie szukać. Tak przynajmniej powinien móc robić informatyk tj. umieć szukać i mieć świadomość istnienia. A po dokładne informacje udać się do specjalistów w swojej dziedzinie.
Przykładowy pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<pr<oject xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl>.grzegorz2047</groupId><b>r>
<artifactId>BotUpVoter</artifactId>
<version>1.>0-SNAPSHOT</version>>
<dependencies>
<dependency>
<groupId>eu>.bittrade.libs</groupId><b>r>
<artifactId>steemj-core</artifactId>
<version>0.4.3</version>
</dependency>
<dependency>
<groupId>or>.junit.jupiter</groupId><b>r>
<artifactId>junit-jupiter-api</artifactId>
<version>5.>.0-M1&l<t;/version>
</dependency>
<dependency>
<groupId>or>.json&l<t;/groupId>
<artifactId>json</artifactId>
<version>20>70516&l<t;/version>
</dependency>
</dependencies>
<build>
<plugins>>
<plugin><b>>
<groupId>or>.apache.maven.plugins</groupId><b>>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<finalName>BotUpVoter</finalName>
</configuration>
</plugin><b>>
<plugin><b>>
<groupId>or>.apache.maven.plugins</groupId><b>>
<artifactId>maven-assembly-plugin</artifactId>
</plugin><b>>
<plugin><b>>
<groupId>or>.apache.maven.plugins</groupId><b>>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin><b>>
<plugin><b>>
<groupId>or>.apache.maven.plugins</groupId><b>>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>pl.grzegorz2047.botupvoter.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin><b>>
<<plugin&g>t;
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<execution>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>ME>A-INF/*.SF</exclude>
<exclude>ME>A-INF/*.DSA</exclude><b>r>
<<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>>
</filters>
<!-- Additional configuration. -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project><</build>
</project>
Gdy posiadamy już własny pom.xml, musimy zbudować nasz projekt.
Możemy to uczynić wykonująć komendę clean install
.
Komenda clean
oznacza "wyczyść pliki z poprzedniej kompilacji, a install
mówi "skompiluj projekt".
To gdzie tę komendę wpisać? tutaj:
Powinno pojawić się menu z opcją "Edit configurations". Klikamy na nią i powinno wyświetlić się to:
Następny krok to kliknięcie przycisku "+" i wybranie z menu listy maven. Po wybraniu maven, wyświetli się takie okienko:
W polu name wpisujemy np. build. Tam może być dowolna nazwa. Następnie w naszym okienku Command line wpisujemy clean install
.Po zakończeniu klikamy "OK".
Następnie uruchamiamy naszą komendę mavenową tutaj:
Po ukończeniu kompilacji, powinniście ujrzeć coś takiego:
Aby skompilować projekt do postaci ".jar", musimy wprowadzić parę pluginów. Czasem może być wymagana meta-inf w naszym "jarze". Do tego też można dostać plugin mavenowy. Wszystkie potrzebne pluginy znajdziecie w przykładowym pom.xml, który pokazałem wam powyżej.
W następnym poście postaram się wam pokazać przykładowy projekt, gdzie wykorzystamy mavena do stworzenia programu. Program ten będzie można uruchomić na dowolnej maszynie z javą w odpowiedniej wersji.
To by było na tyle, jeżeli chodzi o kwestię wprowadzenia was do pojęcia maven.
Przecież to jest jakaś czarna magia, nic nie kumam
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Spokojnie, za pierwszym razem było to dla mnie także niełatwe do zrozumienia. Napiszę przykład na konkretnym projekcie, dzięki czemu łatwiej będzie można to zrozumieć.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Jesteś programistą, czy to tylko takie hobby?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Każdy może być programistą, ale tak, kształcę się w tym kierunku i pracuję jako programista. Tutaj na steemit uczę się przekazywać informacje "mniej nerdowsko" :D
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
To chyba fajna robota musi być
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Jeżeli ktoś lubi rozwiązywać pewne problemy, to jak najbardziej. Czasem jest to trochę nudne, czasem nauczy się czegoś nowego, a czasem można się zdenerwować przy kodzie napisanym przez kogoś innego. Myślę, że można tu doświadczyć każdą możliwą emocję. Także jak najbardziej polecam. Dobre jest też to, że jest szeroki wachlarz możliwości rozwoju. Na przykład, warstwa wizualna, warstwa biznesowa albo chociażby zarządzanie zespołami. Dla każdego coś dobrego :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
A mam pytanie, umiałbyś napisać program (bota) do handlu na giełdzie Bittrex
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Najpierw musiałbym zobaczyć jakie możliwości kontroli udostępnia Bittrex, a potem ktoś musiałby opisać pewne algorytmy działania takiego bota. Nigdy nie wchodziłem w tego typu zagadnienia, ale wszystko zależy od możliwości.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit