Tengo un gran proyecto Maven con muchos módulos y muchos pom.xml
archivos. El proyecto ha cambiado y sospecho que los pom contienen algunas dependencias innecesarias. ¿Hay un comando que elimine las dependencias no utilizadas de un pom?
Tengo un gran proyecto Maven con muchos módulos y muchos pom.xml
archivos. El proyecto ha cambiado y sospecho que los pom contienen algunas dependencias innecesarias. ¿Hay un comando que elimine las dependencias no utilizadas de un pom?
Respuestas:
El complemento de dependencia de Maven ayudará, especialmente el dependency:analyze
objetivo:
dependency:analyze
analiza las dependencias de este proyecto y determina cuáles son: utilizadas y declaradas; usado y no declarado; sin usar y declarado.
Otra cosa que podría ayudar a hacer una limpieza es el informe de convergencia de dependencias del complemento de informes de información del proyecto Maven .
ignoreNonCompile
opción se puede establecer en verdadero.
Puedes usar dependency:analyze -DignoreNonCompile
Esto imprimirá una lista de dependencias declaradas no declaradas y no utilizadas (al tiempo que ignora runtime
/ provided
/ test
/ system
ámbitos para el análisis de dependencia no utilizada).
Tenga cuidado al usar esto, ¡algunas bibliotecas utilizadas en runtime
se consideran no utilizadas!
Como otros han dicho, puede usar la dependencia: analizar el objetivo para encontrar qué dependencias se usan y declaran, se usan y no se declaran, o no se usan y se declaran. También puede encontrar dependencia: analyse-dep-mgt útil para buscar desajustes en su sección de gestión de dependencias.
Simplemente puede eliminar las dependencias directas no deseadas de su POM, pero si son introducidas por tarros de terceros, puede usar las <exclusions>
etiquetas en una dependencia para excluir los tarros de terceros (consulte la sección titulada Exclusiones de dependencias para más detalles y alguna discusión) . Aquí hay un ejemplo que excluye commons-logging de la dependencia Spring:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
¿Has mirado el plugin de dependencia de Maven ? Eso no eliminará cosas por ti, pero tiene herramientas que te permiten hacer el análisis tú mismo. Estoy pensando particularmente en
mvn dependency:tree
Tuve un problema similar y decidí escribir un script que elimine las dependencias para mí. Usando eso, eliminé más de la mitad de las dependencias con bastante facilidad.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
. Solo intenta eliminar todas las dependencias y comprueba si mvn install
funciona.