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

dependency:tree peut être utilisé pour voir l’arborescence des dépendances pour un projet donné. Mais ce dont j’ai besoin, c’est de voir l’arborescence des dépendances pour 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).

1) Utilisez le plugin de dépendance maven

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

 mvn dependency:tree 

Malheureusement, la dépendance mojo doit utiliser pom.xml ou vous obtenez l’erreur suivante:

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

2) Trouvez pom.xml de votre artefact dans le repository central de maven

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

Accédez à http://search.maven.org/ et entrez votre groupId et artefactId.

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

Par exemple, voir org.springframework: spring-core

3) Utilisez le plug-in 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 la dépendance mvn: tree sur ce pom.

Vous pouvez rechercher un artefact 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 .

La solution consiste à appeler la dépendance: arborescence avec le fichier pom.xml de l’artefact:

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

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

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 pom, à partir duquel vous pouvez sélectionner l’onglet Dependency Hierarchy pour afficher la hiérarchie des dépendances (comme son nom l’indique :-))

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

Si vous souhaitez obtenir une représentation graphique consultable de l’arbre de dépendance (y compris tous les modules de votre projet, les dépendances transitives et les informations d’éviction), consultez UpdateImpact: https://app.updateimpact.com (service gratuit).

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