Árbol de dependencia de MVN

Árbol de dependencia de MVN

“Las dependencias son códigos y fragmentos externos importados a su proyecto para proporcionar funcionalidad adicional. Por ejemplo, una dependencia podría ser otro archivo o archivo en proyectos Java. Otras partes del proyecto hacen referencia a la dependencia para ejecutar.

Tener una imagen clara del árbol de dependencia para su proyecto puede ser beneficioso. Permite encontrar rápidamente conflictos entre los paquetes instalados y resolverlos de manera eficiente.

En este tutorial, aprenderemos cómo ver el árbol de dependencia de un proyecto Maven."

Empecemos.

Complemento de dependencia maven

La utilidad Apache Maven viene con una herramienta que le permite administrar sus dependencias. El complemento de dependencia de Maven le permitirá ejecutar un comando simple en su proyecto y visualizar todas sus dependencias.

El recurso del complemento se muestra a continuación:

https: // maven.apache.org/plugins/maven-dependencia-plugin/uso.html

La mejor manera de visualizar el árbol de dependencia de su proyecto con este complemento es ejecutar el siguiente comando:

Dependencia de MVN: árbol

El comando anterior ubicará todas las dependencias en su proyecto y devolverá una estructura similar a un árbol.

Ilustramos cómo podemos lograr esto.

Puede usar cualquier proyecto Maven con cualquier dependencia requerida para hacer esto.

Una vez que ejecute el comando anterior, debería ver la siguiente salida de ejemplo:

[Info] --- Maven-dependencia-Plugin: 2.8: Tree (default-cli) @ jedis ---
[Información] Redis.CLIENTES: JEDIS: JAR: 4.3.0-snapshot
[Info] +- Org.SLF4J: SLF4J-API: JAR: 1.7.32: compilar
[Info] +- Org.apache.Commons: Commons-Pool2: Jar: 2.11.1: compilar
[Info] +- Org.JSON: JSON: JAR: 20211205: compilar
[Info] +- com.Google.código.GSON: GSON: JAR: 2.8.9: compilar
[Info] +- Junit: Junit: Jar: 4.13.2: prueba
[Información] | \- Org.Hamcrest: Hamcrest-core: Jar: 1.3: Prueba
[Info] +- Org.SLF4J: SLF4J-Simple: Jar: 1.7.32: prueba
[Info] +- com.kohlschutter.Junixsocket: Junixsocket-Core: POM: 2.4.0: prueba
[Información] | +- com.kohlschutter.Junixsocket: Junixsocket-Native-Common: Jar: 2.4.0: prueba
[Información] | \- com.kohlschutter.Junixsocket: Junixsocket-Common: Jar: 2.4.0: prueba
[Info] \- orgg.Mockito: Mockito-Enline: Jar: 3.12.4: Prueba
[Info] \- orgg.Mockito: Mockito-Core: Jar: 3.12.4: Prueba
[Información] +- NET.bytebuddy: byte-buddy: jar: 1.11.13: Prueba
[Información] +- NET.bytebuddy: byte-buddy-agent: jar: 1.11.13: Prueba
[Info] \- orgg.Objénesis: Objénesis: Jar: 3.2: prueba

Como puede ver en la salida anterior, Maven devuelve todas las dependencias de nuestro proyecto en un formato de lista.

Es bueno tener en cuenta que este comando requiere que tenga instalados a Maven y Java JDK en su sistema.

Filtrado de dependencias

Si está trabajando en un proyecto grande, es posible que le resulte difícil ver y administrar todas las dependencias utilizando el comando anterior.

Afortunadamente, el complemento de árbol de dependencia de Maven le permite filtrar para las dependencias mostradas. Esto significa que puede incluir o excluir cualquier dependencia que desee.

Para incluir solo una dependencia específica, utilizamos la opción DinCludes como se muestra en la siguiente sintaxis:

MVN Dependency: Tree -Dinchudes [GroupId]: [ArtifactId]: [tipo]: [versión]

Tenga en cuenta que cada uno de los segmentos en el parámetro -DinCluds es opcional.

Por ejemplo, para mostrar cómo se usa una dependencia específica en el proyecto, podemos ejecutar el siguiente comando:

Dependencia de MVN: Tree -Dincludes = Junixsocket: Junixsocket -Core

El código anterior debería devolver:

[Información]
[Información] ------------------------< redis.clients:jedis >-------------------------
[Información] Building Jedis 4.3.0-snapshot
[Información] -------------------------------- [JAR]---------------------------------
[Información]
[Info] --- Maven-dependencia-Plugin: 2.8: Tree (default-cli) @ jedis ---

Para excluir una dependencia del árbol, podemos usar el parámetro -DinCludes como se muestra en la sintaxis a continuación.:

MVN Dependency: Tree -Dincludes = [GroupId]: [ArtifactId]: [tipo]: [versión]

Por ejemplo:

Dependencia de MVN: Tree -DexCludes = Junixsocket: Junixsocket -Core

Esto debería devolver la salida como se muestra a continuación:

Maven Guardar dependencia en el archivo

También puede guardar el árbol de dependencia en un archivo utilizando el parámetro -DoutputFile. A continuación se muestra un ejemplo:

Dependencia de MVN: árbol -doutputFile = "DEP.árbol"

En el comando anterior, le indicamos a Maven que cree un árbol de dependencia y lo guarde en un archivo llamado DEP.árbol.

La salida del archivo resultante se proporciona a continuación:

+- organizar.SLF4J: SLF4J-API: JAR: 1.7.32: compilar
+- organizar.apache.Commons: Commons-Pool2: Jar: 2.11.1: compilar
+- organizar.JSON: JSON: JAR: 20211205: compilar
+- comunicarse.Google.código.GSON: GSON: JAR: 2.8.9: compilar
+- Junit: Junit: Jar: 4.13.2: prueba
| \- Org.Hamcrest: Hamcrest-core: Jar: 1.3: Prueba
+- organizar.SLF4J: SLF4J-Simple: Jar: 1.7.32: prueba
+- comunicarse.kohlschutter.Junixsocket: Junixsocket-Core: POM: 2.4.0: prueba
| +- com.kohlschutter.Junixsocket: Junixsocket-Native-Common: Jar: 2.4.0: prueba
| \- com.kohlschutter.Junixsocket: Junixsocket-Common: Jar: 2.4.0: prueba
\- Org.Mockito: Mockito-Enline: Jar: 3.12.4: Prueba
\- Org.Mockito: Mockito-Core: Jar: 3.12.4: Prueba
+- neto.bytebuddy: byte-buddy: jar: 1.11.13: Prueba
+- neto.bytebuddy: byte-buddy-agent: jar: 1.11.13: Prueba
\- Org.Objénesis: Objénesis: Jar: 3.2: prueba

Maven solo incluirá las dependencias del proyecto en el archivo de manera jerárquica.

Conclusión

Esta publicación cubrió cómo ver el árbol de dependencia de Maven utilizando el complemento de dependencia de Maven.