2009-10-04 47 views
180

Tengo un gran proyecto Maven con numerosos módulos y pom.xmls. y el proyecto ha cambiado tanto que estoy seguro de que el pom debe tener algunas dependencias innecesarias en ellos. ¿Alguien sabe si hay un comando que puede ejecutar para eliminar cualquier dependencia sin sentido de un pom?¿Hay una manera simple de eliminar las dependencias no utilizadas de un maven pom.xml?

+0

Si está utilizando IntelliJ, consulte esto: http://jonnyzzz.com/blog/2013/05/13/removing-unused-dependencies-in-idea/ En caso de enlace inactivo: Jonnyzzz Dependencies plugin – Benj

Respuesta

24

¿Has mirado el Maven Dependency Plugin? Eso no eliminará las cosas por usted, pero tiene herramientas que le permiten hacer el análisis usted mismo. Estoy pensando sobre todo en

mvn dependency:tree 
+1

Excelente - gracias (no pude encontrar lo que estaba buscando porque seguí buscando "dependencias limpias" y estaba lanzando el plugin limpio !! pero esto parece prometedor ... dependencia mvn: analizar) –

160

El Maven Dependency Plugin ayudará, especialmente el dependency:analyze objetivo:

dependency:analyze analiza las dependencias de este proyecto y determina cuales son: utilizar y declaró; usado y no declarado; no utilizado y declarado.

Otra cosa que podría ayudar a hacer algo de limpieza es la Dependency Convergence report del Maven Project Info Reports Plugin.

+4

¿Cómo puedo activar esto en Eclipse? ? –

+81

Tenga cuidado con la dependencia: analizar, algunas bibliotecas utilizadas en tiempo de ejecución se consideran como no utilizadas. – Nereis

+13

Para evitar informar el tiempo de ejecución y las dependencias proporcionadas como no utilizadas, la opción ['ignoreNonCompile'] (https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html#ignoreNonCompile) se puede establecer en cierto. – sudeep

33

Como han dicho otros, puede usar el objetivo dependency:analyze 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 dependency:analyze-dep-mgt útil para buscar discrepancias en la sección de gestión de la dependencia.

Usted puede simplemente eliminar las dependencias directas no deseados de su POM, pero si que son introducidos por los tarros de terceros, puede utilizar los <exclusions> etiquetas en una dependencia de excluir a los frascos de terceros (véase la sección titulada Dependencia Exclusiones para detalles y algo de discusión). Aquí está un ejemplo excluyendo commons-logging de la dependencia de primavera:

<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> 
+0

(IntelliJ) Usé el complemento Jonnyzzz, como se comentó en la pregunta. Buen plugin, funciona bien con IntelliJ 2016.1.3 – Benj

11

Puede utilizar dependency:analyze -DignoreNonCompile

Esto imprimirá una lista de dependencias declaradas no declarados y sin uso (sin tener en cuenta tiempo de ejecución/Siempre/Prueba/Sistema de ámbitos para el análisis de la dependencia sin usar.)

¡Pero tenga cuidado al usar esto, algunas bibliotecas utilizadas en tiempo de ejecución se consideran como no utilizadas!

Cuestiones relacionadas