web-dev-qa-db-fra.com

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

J'ai un grand projet Maven avec de nombreux modules et pom.xml. et le projet a tellement changé que je suis sûr que les pom doivent avoir des dépendances inutiles. Est-ce que quelqu'un sait s'il y a une commande que vous pouvez exécuter pour supprimer toute dépendance inutile d'un pom?

239
thickosticko

Le plugin Maven Dependency vous aidera, en particulier l’objectif dependency:analyze:

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

Une autre chose qui pourrait aider à faire un nettoyage est le rapport de convergence de dépendance du plug-in de rapports d'informations de projet Maven .

200
Pascal Thivent

Comme d'autres l'ont déjà dit, vous pouvez utiliser l'objectif dependency: analysis pour rechercher 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 dependency: analyse-dep-mgt utile pour rechercher les incompatibilités dans votre section dependencyManagement.

Vous pouvez simplement supprimer les dépendances directes non souhaitées de votre POM, mais si elles sont introduites par des jars tiers, vous pouvez utiliser les balises <exclusions> dans une dépendance pour exclure les jars tiers ( voir la section intitulée Exclusions de dépendance pour plus de détails et une discussion). Voici un exemple excluant la consignation de commons 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>
_
38
Rich Seller

Vous pouvez utiliser dependency:analyze -DignoreNonCompile

Ceci imprimera une liste de dépendances _used undeclared_ et _unused declared_ (tout en ignorant les étendues runtime/provided/test/system pour les analyses de dépendance non utilisées. )

Mais soyez prudent lorsque vous utilisez ceci, certains Les bibliothèques utilisées à runtime sont considérées comme non utilisées!

35
Saikat Sengupta

Avez-vous regardé le Plugin Maven Dependency ? Cela ne supprimera rien pour vous, mais des outils vous permettront de faire l'analyse vous-même. Je pense en particulier à

mvn dependency:tree
32
Brian Agnew

J'ai eu le même genre de problème et j'ai décidé d'écrire un script qui supprime les dépendances pour moi. En utilisant cela, je me suis débarrassé assez facilement de la moitié des dépendances.

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

14
user1132305