Esiste un modo semplice per rimuovere le dipendenze non utilizzate da un pom.xml maven?


277

Ho un grande progetto Maven con molti moduli e molti pom.xmlfile. Il progetto è cambiato e sospetto che i pom contengano alcune dipendenze non necessarie. Esiste un comando che rimuove eventuali dipendenze non utilizzate da un pom?


2
Se si utilizza IntelliJ, vedere questo: jonnyzzz.com/blog/2013/05/13/… In caso di dead link: plug
Benj

3
@Benj Ho provato a usare questo plugin jonnyzz ed è stato inutile. Il più delle volte non trova dipendenze inutilizzate, e talvolta quando lo fa rimuove le dipendenze dal percorso della classe non dal file build.gradle. Non riesco nemmeno a trovare un documento adeguato per spiegare come funziona effettivamente questo plugin.
vaibhav.g,

@ vaibhav.g grazie per l'aggiornamento. Sembra che le cose siano cambiate dal 2016 in poi.
Benj,

Risposte:


222

Il plug-in di dipendenza Maven aiuterà, in particolare l' dependency:analyzeobiettivo:

dependency:analyzeanalizza le dipendenze di questo progetto e determina quali sono: utilizzate e dichiarate; usato e non dichiarato; inutilizzato e dichiarato.

Un'altra cosa che potrebbe aiutare a fare un po 'di pulizia è il rapporto sulla convergenza delle dipendenze dal plug-in Maven Project Info Reports .


5
Come posso attivarlo in Eclipse?
Daniil Shevelev,

134
Fai attenzione alla dipendenza: analizza, alcune librerie utilizzate in fase di esecuzione sono considerate inutilizzate.
Nereis,

27
Per impedire la segnalazione del runtime e le dipendenze fornite come inutilizzate, è ignoreNonCompilepossibile impostare l' opzione su true.
sudeep,

fai attenzione mentre usi la dipendenza: analizza, anche io stavo usando 'ejp api3'depedency ma il rapporto mostrava che era' inutilizzato e dichiarato '
Akhil S Kamath,

Per comprendere i risultati dell'analisi, vedere questa risposta: "Le dipendenze non dichiarate utilizzate sono quelle necessarie, ma non sono state dichiarate esplicitamente come dipendenze nel progetto." - stackoverflow.com/questions/4565740/...
Janáč Meena

49

Puoi usare dependency:analyze -DignoreNonCompile

Verrà stampato un elenco di dipendenze dichiarate usate non dichiarate e non utilizzate (ignorando runtime/ provided/ test/ systemambiti per l'analisi delle dipendenze non utilizzate).

Fai attenzione quando lo usi, alcune librerie utilizzate in runtimesono considerate inutilizzate!

Per maggiori dettagli consultare questo link


4
[più] 1 per la menzione di runtime!
gaurav,

1
Hai ragione, alcune dipendenze di runtime vengono dichiarate inutilizzate ma di fatto necessarie.
Smart Coder

43

Come altri hanno già detto, è possibile utilizzare la dipendenza: analizzare l' obiettivo per trovare quali dipendenze vengono utilizzate e dichiarate, utilizzate e non dichiarate o non utilizzate e dichiarate. È inoltre possibile trovare dipendenza: analizza-dep-mgt utile per cercare disallineamenti nella sezione Gestione dipendenze.

Puoi semplicemente rimuovere dipendenze dirette indesiderate dal tuo POM, ma se sono introdotte da vasetti di terze parti, puoi utilizzare i <exclusions>tag in una dipendenza per escludere i vasetti di terze parti (vedi la sezione intitolata Esclusioni di dipendenze per dettagli e alcune discussioni) . Ecco un esempio che esclude la registrazione comune dalla dipendenza 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) Ho usato il plugin Jonnyzzz, come commentato alla domanda. Simpatico plugin, funziona bene con IntelliJ 2016.1.3
Benj

34

Hai visto il plug-in di dipendenza Maven ? Questo non rimuoverà le cose per te, ma ha strumenti per permetterti di fare tu stesso l'analisi. Sto pensando in particolare

mvn dependency:tree

1
Eccellente - grazie (non riuscivo a trovare quello che cercavo mentre continuavo a cercare "dipendenze pulite" e stava gettando via il plugin pulito !! ma questo sembra promettente .. dipendenza mvn: analizzare)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.