web-dev-qa-db-fra.com

Comment obtenir un arbre de dépendance pour un artefact?

dependency:tree peut être utilisé pour voir l'arbre de dépendance d'un projet donné. Mais ce dont j'ai besoin, c'est de voir l'arbre de dépendance d'un artefact tiers.

Je suppose que je peux créer un projet vide, mais je cherche quelque chose de plus facile (je dois le faire pour plusieurs artefacts).

65
IttayD

1) Utilisez maven dependency plugin

Créez un projet simple avec pom.xml uniquement. Ajoutez votre dépendance et lancez:

mvn dependency:tree

Malheureusement, dependency mojo doit utiliser pom.xml ou vous obtenez le message d'erreur suivant:

Impossible d'exécuter mojo: tree. Cela nécessite un projet avec un fichier pom.xml existant, mais la construction n'en utilise pas.

2) Trouvez le fichier pom.xml de votre artefact dans le référentiel central maven

Les dépendances sont décrites dans pom.xml de votre artefact. Trouvez-le en utilisant l'infrastructure Maven.

Allez sur http://search.maven.org/ et entrez votre groupId et votre artefactId. 

Ou vous pouvez aller à http://repo1.maven.org/maven2/ et naviguer d'abord en utilisant les plugins groupId, plus tard en utilisant artifactId et enfin en utilisant sa version.

Par exemple, voir org.springframework: spring-core

3) Utilisez le plugin de dépendance maven contre votre artefact

Une partie de l'artefact de dépendance est un pom.xml. Cela spécifie sa dépendance. Et vous pouvez exécuter mvn dependency: tree sur ce pom. 

85
amra

Vous pouvez rechercher un artifact spécifique à l'aide de cette commande maven:

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]

Selon la documentation:

où chaque segment de modèle est facultatif et prend en charge les caractères génériques * complets et partiels. Un segment de modèle vide est traité comme un caractère générique implicite.

Imaginez que vous essayez de trouver le fichier jar 'log4j-1.2-api' parmi les différents modules de votre projet:

mvn dependency:tree -Dverbose -Dincludes=org.Apache.logging.log4j:log4j-1.2-api

plus d'informations peuvent être trouvées ici .

23
Kayvan Tehrani

La solution consiste à appeler dependency: tree avec le fichier pom.xml de l'artefact:

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree

Voir aussi Comment lister les dépendances transitives d'un artefact à partir d'un référentiel?

4
Matthias M

Si vous utilisez une version actuelle de m2Eclipse (que vous devriez utiliser si vous utilisez Eclipse et maven):

Sélectionnez l'entrée du menu

Navigate -> Open Maven POM

et entrez l'artefact que vous recherchez.

Le pom s'ouvre dans l'éditeur de pom, à partir duquel vous pouvez sélectionner l'onglet Dependency Hierarchy pour afficher la hiérarchie des dépendances (comme son nom l'indique :-))

2
Sean Patrick Floyd

Si votre artefact n'est pas une dépendance d'un projet donné, le mieux est d'utiliser un moteur de recherche repository . Beaucoup d'entre eux décrivent les dépendances d'un artefact donné.

1
Pascal Thivent

Si vous souhaitez obtenir une représentation graphique et interrogeable de l'arbre de dépendance (comprenant tous les modules de votre projet, les dépendances transitives et les informations d'éviction), consultez UpdateImpact: https://app.updateimpact.com (free un service).

Disclaimer: Je suis l'un des développeurs du site

0
adamw