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>
<artifactId>BotUpVoter</artifactId>
<version>1.>0-SNAPSHOT</version>>
<dependencies>
<dependency>
<groupId>eu>.bittrade.libs</groupId>
<artifactId>steemj-core</artifactId>
<version>0.4.3</version>
</dependency>
<dependency>
<groupId>or>.junit.jupiter</groupId>
<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>
<groupId>or>.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<finalName>BotUpVoter</finalName>
</configuration>
</plugin>
<plugin>
<groupId>or>.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
<plugin>
<groupId>or>.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>or>.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>pl.grzegorz2047.botupvoter.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<<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>
<<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>>
</filters>
<!-- Additional configuration. -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
To by było na tyle, jeżeli chodzi o kwestię wprowadzenia was do pojęcia maven.