Encuentre dependencias de Maven no utilizadas

1. Información general

Cuando usamos Maven para administrar las dependencias de nuestro proyecto, podemos perder de vista las dependencias que se usan en nuestra aplicación.

En este breve tutorial, cubriremos cómo usar el complemento de dependencia de Maven , un complemento que nos ayuda a encontrar dependencias no utilizadas en nuestro proyecto.

2. Configuración del proyecto

Comencemos agregando un par de dependencias, slf4j-api (la que usaremos ) y common-collections (la que no usaremos):

  commons-collections commons-collections 3.2.2   org.slf4j slf4j-api 1.7.25   

Podemos acceder al complemento de dependencia de Maven sin especificarlo en nuestro pom. En cualquier caso, podemos usar la definición pom.xml para especificar la versión y también algunas propiedades si es necesario:

   maven-dependency-plugin 3.1.2   

3. Ejemplo de código

Ahora que tenemos nuestro proyecto configurado, escribamos una línea de código donde usemos una de las dependencias que definimos antes:

public Logger getLogger() { return LoggerFactory.getLogger(UnusedDependenciesExample.class); }

El LoggerFactory de la biblioteca Slf4J se devuelve en un método, pero no se usa la biblioteca de colecciones comunes, por lo que es un candidato para su eliminación.

4. Encuentre dependencias no utilizadas

Usando el complemento de dependencia de Maven, podemos encontrar las dependencias que no están en uso en nuestro proyecto. Para eso, invocamos el objetivo de análisis del complemento:

$ mvn dependency:analyze [INFO] --- maven-dependency-plugin:3.1.1:analyze (default-cli) @ maven-unused-dependencies --- [WARNING] Unused declared dependencies found: [WARNING] commons-collections:commons-collections:jar:3.2.2:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.225 s [INFO] Finished at: 2020-04-01T16:10:25-04:00 [INFO] ------------------------------------------------------------------------

Para cada dependencia que no está en uso en nuestro proyecto, Maven emite una advertencia en el informe de análisis.

5. Especifique las dependencias según se utilizan

Dependiendo de la naturaleza del proyecto, a veces es posible que necesitemos cargar clases en tiempo de ejecución, como por ejemplo en un proyecto orientado a complementos.

Dado que las dependencias no se utilizan en tiempo de compilación, el complemento maven-dependency-plugin emitiría una advertencia indicando que no se está utilizando una dependencia, cuando en realidad sí lo está. Para eso, podemos hacer cumplir e indicar al complemento que se está utilizando una biblioteca.

Hacemos esto enumerando las dependencias dentro de la propiedad usedDependencies :

 org.apache.maven.plugins maven-dependency-plugin   commons-collections:commons-collections   

Al ejecutar el objetivo de análisis nuevamente, vemos que la dependencia no utilizada ya no se considera en el informe.

6. Conclusión

En este breve tutorial, aprendimos cómo encontrar dependencias de maven no utilizadas. Es una buena práctica comprobar periódicamente las dependencias no utilizadas, ya que mejora la capacidad de mantenimiento y reduce el tamaño de la biblioteca de nuestro proyecto.

Como siempre, el código fuente completo con todos los ejemplos está disponible en GitHub.