¿Hay una manera simple de eliminar las dependencias no utilizadas de un pom.xml maven?


277

Tengo un gran proyecto Maven con muchos módulos y muchos pom.xmlarchivos. 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?


2
Si está utilizando IntelliJ, vea esto: jonnyzzz.com/blog/2013/05/13/… En caso de enlace muerto: plugin Jonnyzzz Dependencies
Benj

3
@Benj Traté de usar este complemento jonnyzz, y fue inútil. La mayoría de las veces no encontrará dependencias no utilizadas y, a veces, cuando lo haga, eliminaría las dependencias de la ruta de clase, no del archivo build.gradle. Ni siquiera puedo encontrar el documento adecuado para explicar cómo funciona realmente este complemento.
vaibhav.g

@ vaibhav.g gracias por la actualización. Parece que las cosas cambiaron desde 2016 entonces.
Benj

Respuestas:


222

El complemento de dependencia de Maven ayudará, especialmente el dependency:analyzeobjetivo:

dependency:analyzeanaliza 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 .


55
¿Cómo puedo activar esto en Eclipse?
Daniil Shevelev

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

27
Para evitar informar el tiempo de ejecución y las dependencias proporcionadas como no utilizadas, la ignoreNonCompileopción se puede establecer en verdadero.
sudeep

tenga cuidado al usar la dependencia: analice, incluso yo estaba usando la dependencia 'ejp api3' pero el informe mostró que estaba 'sin usar y declarado'
Akhil S Kamath

Para comprender los resultados del análisis, vea esta respuesta: "Las dependencias no declaradas utilizadas son aquellas que se requieren, pero no se han declarado explícitamente como dependencias en su proyecto". - stackoverflow.com/questions/4565740/…
Janac Meena

49

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 runtimese consideran no utilizadas!

Para más detalles consulte este enlace


44
[más] 1 para la mención de tiempo de ejecución!
gaurav

1
Tienes razón, algunas dependencias de tiempo de ejecución se declaran no utilizadas, pero de hecho son necesarias.
Smart Coder

43

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>

3
(IntelliJ) Usé el complemento Jonnyzzz, como comentaba la pregunta. Bonito complemento, funciona bien con IntelliJ 2016.1.3
Benj

34

¿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

1
Excelente - gracias (no podía encontrar lo que estaba buscando mientras continuaba la búsqueda de "dependencias limpias" y estaba vomitando el plugin limpia !! pero esto parece prometedor .. dependencia mvn: analizar)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.