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?

un pantalon
la source
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 .

Pascal Thivent
la source
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

Saikat
la source
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>
Vendeur riche
la source
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
Brian Agnew
la source
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)
14

J'ai eu un problème similaire et j'ai décidé d'écrire un script qui supprime les dépendances pour moi. En utilisant cela, j'ai obtenu plus de la moitié des dépendances assez facilement.

http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html

user1132305
la source
2
Remarque, ce script n'utilise pas mvn dependency:analyze. Il essaie simplement de supprimer toutes les dépendances et vérifie si cela mvn installfonctionne.
diète