Albero di dipendenza MVN

Albero di dipendenza MVN

“Le dipendenze sono codici esterni e frammenti importati nel progetto per fornire funzionalità extra. Ad esempio, una dipendenza potrebbe essere un altro archivio o file nei progetti Java. Altre parti del progetto fanno quindi riferimento alla dipendenza per eseguire.

Avere un'immagine chiara dell'albero della dipendenza per il tuo progetto può essere utile. Consente di trovare rapidamente conflitti tra pacchetti installati e risolverli in modo efficiente.

In questo tutorial, impareremo come visualizzare l'albero di dipendenza di un progetto Maven."

Iniziamo.

Plugin di dipendenza Maven

L'utilità Apache Maven viene fornita con uno strumento che ti consente di gestire le tue dipendenze. Il plugin di dipendenza Maven ti consentirà di eseguire un semplice comando nel tuo progetto e visualizzare tutte le sue dipendenze.

La risorsa del plug -in è mostrata di seguito:

https: // maven.Apache.Org/plugins/Maven-dipendenze-plugin/utilizzo.html

Il modo migliore per visualizzare l'albero di dipendenza dal progetto con questo plugin è eseguendo il seguente comando:

Dipendenza MVN: albero

Il comando precedente localizzerà tutte le dipendenze nel progetto e restituirà una struttura simile a un albero.

Illustriamo come possiamo raggiungere questo obiettivo.

È possibile utilizzare qualsiasi progetto Maven con qualsiasi dipendenza richiesta per farlo.

Una volta eseguito il comando sopra, dovresti vedere l'output di esempio seguente:

[INFO] --- Maven-Dependency-Plugin: 2.8: albero (default-cli) @ jedis ---
[Info] Redis.Clienti: Jedis: Jar: 4.3.0-snapshot
[Info] +- org.SLF4J: SLF4J-API: JAR: 1.7.32: compilazione
[Info] +- org.Apache.Commons: Commons-Pool2: Jar: 2.11.1: compilazione
[Info] +- org.JSON: JSON: JAR: 20211205: Compila
[Info] +- com.Google.codice.GSON: GSON: JAR: 2.8.9: Compila
[Info] +- Junit: Junit: Jar: 4.13.2: test
[Info] | \- org.Hamcrest: Hamcrest-Core: Jar: 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: Jar: 2.4.0: test
[Info] | \- com.Kohlschutter.JunixSocket: JunixSocket-Common: Jar: 2.4.0: test
[Info] \- org.Mockito: mockito-inline: jar: 3.12.4: test
[Info] \- org.Mockito: mockito-core: barattolo: 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: Objenesis: Jar: 3.2: test

Come puoi vedere dall'output sopra, Maven restituisce tutte le dipendenze del nostro progetto in un formato di elenco.

È bene tenere presente che questo comando richiede di installare Maven e Java JDK sul tuo sistema.

Filtraggio delle dipendenze

Se stai lavorando a un grande progetto, potresti avere difficoltà a visualizzare e gestire tutte le dipendenze utilizzando il comando sopra.

Fortunatamente, il plug -in Maven Dipendency Tree consente di filtrare le dipendenze mostrate. Ciò significa che puoi includere o escludere qualsiasi dipendenza che desideri.

Per includere solo una dipendenza specifica, utilizziamo l'opzione Dincludes come mostrato nella sintassi seguente:

Dipendenza MVN: alberi di albero [groupid]: [artifactid]: [type]: [versione]

Tieni presente che ciascuno dei segmenti nel parametro -Dinclude è facoltativo.

Ad esempio, per mostrare come viene utilizzata una dipendenza specifica nel progetto, possiamo eseguire il seguente comando:

Dipendenza MVN: albero -dincludes = JunixSocket: JunixSocket -core

Il codice precedente dovrebbe restituire:

[INFORMAZIONI]
[INFORMAZIONI] ------------------------< redis.clients:jedis >-------------------------
[Info] Building Jedis 4.3.0-snapshot
[Info] ------------------------------------ [Jar]---------------------------------
[INFORMAZIONI]
[INFO] --- Maven-Dependency-Plugin: 2.8: albero (default-cli) @ jedis ---

Per escludere una dipendenza dall'albero, possiamo usare il parametro -Dinclude come mostrato nella sintassi seguente.:

Dipendenza MVN: albero -dincludes = [groupid]: [artifactid]: [tipo]: [versione]

Per esempio:

Dipendenza MVN: Tree -DexLudes = JunixSocket: JunixSocket -Core

Questo dovrebbe restituire l'output come mostrato di seguito:

Maven salva la dipendenza da file

È inoltre possibile salvare l'albero di dipendenza in un file utilizzando il parametro -doutputfile. Un esempio è mostrato di seguito:

Dipendenza MVN: albero -DoutputFile = "DEP.albero"

Nel comando precedente, istruiamo Maven di creare un albero di dipendenza e salvarlo in un file chiamato DEP.albero.

L'output del file risultante è fornito di seguito:

+- org.SLF4J: SLF4J-API: JAR: 1.7.32: compilazione
+- org.Apache.Commons: Commons-Pool2: Jar: 2.11.1: compilazione
+- org.JSON: JSON: JAR: 20211205: Compila
+- com.Google.codice.GSON: GSON: JAR: 2.8.9: Compila
+- JUnit: Junit: Jar: 4.13.2: test
| \- org.Hamcrest: Hamcrest-Core: Jar: 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: Jar: 2.4.0: test
| \- com.Kohlschutter.JunixSocket: JunixSocket-Common: Jar: 2.4.0: test
\- org.Mockito: mockito-inline: jar: 3.12.4: test
\- org.Mockito: mockito-core: barattolo: 3.12.4: test
+- netto.bytebuddy: byte-buddy: jar: 1.11.13: Test
+- netto.bytebuddy: byte-buddy-agent: jar: 1.11.13: Test
\- org.Objenesis: Objenesis: Jar: 3.2: test

Maven includerà solo le dipendenze del progetto nel file in modo gerarchico.

Conclusione

Questo post ha coperto come visualizzare l'albero di dipendenza Maven usando il plug -in di dipendenza Maven.