Drzewo zależności MVN

Drzewo zależności MVN

„Zależności to kody zewnętrzne i fragmenty importowane do twojego projektu, aby zapewnić dodatkową funkcjonalność. Na przykład zależność może być kolejnym archiwum lub plikiem w projektach Java. Inne części projektu odwołują się do zależności do uruchomienia.

Posiadanie jasnego obrazu drzewa zależności dla twojego projektu może być korzystne. Umożliwia szybko znajdowanie konfliktów między zainstalowanymi pakietami a wydajnym rozwiązywaniem.

W tym samouczku dowiemy się, jak zobaczyć drzewo zależności projektu Maven."

Zacznijmy.

Wtyczka zależności Maven

Narzędzie Apache Maven jest wyposażone w narzędzie, które umożliwia zarządzanie zależnościami. Wtyczka zależności Maven pozwoli ci uruchomić proste polecenie w projekcie i wizualizować wszystkie jego zależności.

Zasób wtyczek pokazano poniżej:

https: // maven.Apache.org/wtyczki/maven-zależność-Plugin/użytkowanie.html

Najlepszym sposobem wizualizacji drzewa zależności projektu z tą wtyczką jest uruchomienie następującego polecenia:

Zależność MVN: drzewo

Poprzednie polecenie zlokalizuje wszystkie zależności w twoim projekcie i zwróci strukturę przypominającą drzewo.

Zilustrujmy, w jaki sposób możemy to osiągnąć.

Możesz użyć dowolnego projektu Maven z wszelkimi wymaganymi zależnościami, aby to zrobić.

Po uruchomieniu powyższego polecenia powinieneś zobaczyć następujące dane przykładowe:

[Informacje] --- Maven Dependency-Plugin: 2.8: Tree (domyślne-cli) @ jeedis ---
[Info] Redis.Klienci: Jedis: słoik: 4.3.0-Snapshot
[Info] +- org.SLF4J: SLF4J-API: JAR: 1.7.32: kompiluj
[Info] +- org.Apache.Commons: Commons-Pool2: słoik: 2.11.1: kompiluj
[Info] +- org.JSON: JSON: słoik: 20211205: kompiluj
[Info] +- com.Google.kod.GSON: GSON: JAR: 2.8.9: kompiluj
[Info] +- Junit: Junit: Jar: 4.13.2: Test
[Info] | \- org.Hamcrest: Hamcrest-Core: słoik: 1.3: Test
[Info] +- org.SLF4J: SLF4J-SIMPLE: JAR: 1.7.32: Test
[Info] +- com.Kohlschutter.Junixsocket: Junixsocket-Core: POM: 2.4.0: Test
[Info] | +- com.Kohlschutter.Junixsocket: Junixsocket-Native Common: słoik: 2.4.0: Test
[Info] | \- com.Kohlschutter.Junixsocket: Junixsocket-Common: słoik: 2.4.0: Test
[Info] \- org.Mockleto: Mockleto-inline: słoik: 3.12.4: Test
[Info] \- org.Mockleto: Mockoto-Core: słoik: 3.12.4: Test
[Info] +- Net.BYTEBUDDY: BYTE BUDDY: JAR: 1.11.13: Test
[Info] +- Net.BYTEBUDDY: BYTE-BUDDY-AGENT: JAR: 1.11.13: Test
[Info] \- org.OBjenesis: objeneza: słoik: 3.2: Test

Jak widać z powyższego wyjścia, Maven zwraca wszystkie zależności naszego projektu w formacie listy.

Dobrze należy pamiętać, że to polecenie wymaga zainstalowania Maven i Java JDK.

Filtrowanie zależności

Jeśli pracujesz nad dużym projektem, możesz być trudno przeglądać i zarządzać wszystkimi zależnościami za pomocą powyższego polecenia.

Na szczęście wtyczka drzewa zależności Maven umożliwia filtrowanie dla pokazanych zależności. Oznacza to, że możesz uwzględnić lub wykluczyć dowolną zależność, jaką chcesz.

Aby uwzględnić tylko specyficzną zależność, używamy opcji dincludes, jak pokazano w następującej składni:

MVN Zależność: Tree -dincludes [GroupID]: [ArtifactID]: [Typ]: [Wersja]

Pamiętaj, że każdy z segmentów w parametrze -dincludes jest opcjonalny.

Na przykład, aby pokazać, w jaki sposób w projekcie jest używana określona zależność, możemy uruchomić następujące polecenie:

MVN Zależność: drzewo -Dincludes = JunixSocket: JunixSocket -Core

Poprzedni kod powinien zwrócić:

[Informacje]
[Informacje] ------------------------< redis.clients:jedis >-------------------------
[Info] Budowanie Jedis 4.3.0-Snapshot
[Informacje] -------------------------------- [JAR]---------------------------------
[Informacje]
[Informacje] --- Maven Dependency-Plugin: 2.8: Tree (domyślne-cli) @ jeedis ---

Aby wykluczyć zależność z drzewa, możemy użyć parametru -dincludes, jak pokazano w poniższej składni.:

MVN Zależność: Tree -dincludes = [GroupId]: [ArtefactID]: [Type]: [wersja]

Na przykład:

Zależność MVN: Tree -Dexcludes = JunixSocket: JunixSocket -Core

Powinno to zwrócić dane wyjściowe, jak pokazano poniżej:

Maven Zapisz zależność na pliku

Możesz także zapisać drzewo zależności na pliku za pomocą parametru -DoutputFile. Przykład jest pokazany poniżej:

MVN Zależność: Tree -doutputFile = "DEP.drzewo"

W poprzednim poleceniu pouczamy Maven, aby utworzył drzewo zależności i zapisujemy je w pliku o nazwie DEP.drzewo.

Wynikowe wyjście pliku znajduje się poniżej:

+- org.SLF4J: SLF4J-API: JAR: 1.7.32: kompiluj
+- org.Apache.Commons: Commons-Pool2: słoik: 2.11.1: kompiluj
+- org.JSON: JSON: słoik: 20211205: kompiluj
+- com.Google.kod.GSON: GSON: JAR: 2.8.9: kompiluj
+- Junit: Junit: Jar: 4.13.2: Test
|. \- org.Hamcrest: Hamcrest-Core: słoik: 1.3: Test
+- org.SLF4J: SLF4J-SIMPLE: JAR: 1.7.32: Test
+- com.Kohlschutter.Junixsocket: Junixsocket-Core: POM: 2.4.0: Test
|. +- com.Kohlschutter.Junixsocket: Junixsocket-Native Common: słoik: 2.4.0: Test
|. \- com.Kohlschutter.Junixsocket: Junixsocket-Common: słoik: 2.4.0: Test
\- org.Mockleto: Mockleto-inline: słoik: 3.12.4: Test
\- org.Mockleto: Mockoto-Core: słoik: 3.12.4: Test
+- internet.BYTEBUDDY: BYTE BUDDY: JAR: 1.11.13: Test
+- internet.BYTEBUDDY: BYTE-BUDDY-AGENT: JAR: 1.11.13: Test
\- org.OBjenesis: objeneza: słoik: 3.2: Test

Maven będzie zawierać zależności projektu w pliku w sposób hierarchiczny.

Wniosek

Ten post obejmował sposób wyświetlania drzewa zależności Maven za pomocą wtyczki zależności Maven.