Existe-t-il un moyen simple de supprimer les dépendances inutilisées d'un maven pom.xml?


277

J'ai un grand projet Maven avec de nombreux modules et de nombreux pom.xmlfichiers. Le projet a changé et je soupçonne que les pom contiennent des dépendances inutiles. Existe-t-il une commande qui supprime les dépendances inutilisées d'un pom?


2
Si vous utilisez IntelliJ, consultez ceci: jonnyzzz.com/blog/2013/05/13/… En cas de lien mort: plug
Benj

3
@Benj J'ai essayé d'utiliser ce plugin jonnyzz, et c'était inutile. La plupart du temps, il ne trouvera aucune dépendance inutilisée, et parfois, quand il le fera, il supprimera les dépendances du chemin de classe et non du fichier build.gradle. Je ne peux même pas trouver de doc approprié pour expliquer comment ce plugin fonctionne réellement.
vaibhav.g

@ vaibhav.g merci pour la mise à jour. Il semble que les choses aient changé depuis 2016.
Benj

Réponses:


222

Le plug-dependency:analyze in de dépendance Maven vous aidera, en particulier l' objectif:

dependency:analyzeanalyse les dépendances de ce projet et détermine lesquelles sont: utilisées et déclarées; utilisé et non déclaré; inutilisé et déclaré.

Une autre chose qui pourrait aider à faire un peu de nettoyage est le rapport de convergence des dépendances du plug-in Maven Project Info Reports .


5
Comment puis-je déclencher cela dans Eclipse?
Daniil Shevelev

134
Attention à la dépendance: analysez, certaines bibliothèques utilisées à l'exécution sont considérées comme inutilisées.
Nereis

27
Pour éviter de signaler le runtime et les dépendances fournies comme inutilisées, l' ignoreNonCompileoption peut être définie sur true.
2015

soyez prudent lorsque vous utilisez la dépendance: analysez, même si j'utilisais 'ejp api3'depedency mais le rapport a montré qu'il était' inutilisé et déclaré '
Akhil S Kamath

Pour comprendre les résultats de l'analyse, consultez cette réponse: "Les dépendances non déclarées utilisées sont celles qui sont requises, mais n'ont pas été explicitement déclarées comme dépendances dans votre projet." - stackoverflow.com/questions/4565740/…
Janac Meena

49

Vous pouvez utiliser dependency:analyze -DignoreNonCompile

Cela affichera une liste des dépendances déclarées non déclarées et inutilisées utilisées (tout en ignorant les étendues runtime/ provided/ test/ systempour l'analyse des dépendances inutilisées.)

Soyez prudent lorsque vous utilisez ceci, certaines bibliothèques utilisées sur runtimesont considérées comme inutilisées!

Pour plus de détails, référez-vous à ce lien


4
[plus] 1 pour la mention d'exécution!
gaurav

1
Vous avez raison, certaines dépendances d'exécution sont supprimées comme inutilisées mais en fait nécessaires.
Smart Coder

43

Comme d'autres l'ont dit, vous pouvez utiliser l' objectif de dépendance: analyse pour trouver les dépendances utilisées et déclarées, utilisées et non déclarées, ou non utilisées et déclarées. Vous pouvez également trouver la dépendance: analyse-dep-mgt utile pour rechercher les incompatibilités dans votre section de gestion des dépendances.

Vous pouvez simplement supprimer les dépendances directes indésirables de votre POM, mais si elles sont introduites par des fichiers JAR tiers, vous pouvez utiliser les <exclusions>balises dans une dépendance pour exclure les fichiers JAR tiers (voir la section intitulée Exclusions de dépendances pour plus de détails et une discussion) . Voici un exemple excluant la journalisation des communs de la dépendance 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) J'ai utilisé le plugin Jonnyzzz, comme commenté à la question. Nice plugin, fonctionne bien avec IntelliJ 2016.1.3
Benj

34

Avez-vous regardé le plug-in de dépendance Maven ? Cela ne supprimera pas les choses pour vous, mais dispose d'outils pour vous permettre de faire l'analyse vous-même. Je pense en particulier à

mvn dependency:tree

1
Excellent - merci (je n'ai pas trouvé ce que je cherchais car je continuais à chercher des "dépendances propres" et il lançait le plugin propre !! mais cela semble prometteur .. dépendance mvn: analyse)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.