63 votes

Comment obtenir l'impression des dépendances Maven dans un fichier dans un format lisible ?

Je travaille sur un gros projet avec de nombreux fichiers pom.xml et je dois spécifier toutes les bibliothèques que j'utilise. Cela signifie que je dois lire les fichiers pom.xml récursivement et obtenir groupId, artifactId, scope et version. J'ai consulté mvn dependency:tree mais je ne trouve pas de moyen de l'imprimer dans un fichier dans un format lisible. J'ai vu appendOutput mais je n'ai vu aucun exemple sur la façon de l'utiliser dans cmd. J'ai vu quelques solutions réalisées sous Linux mais je n'ai accès qu'à Windows XP.

100voto

AC Capehart Points 1122

Cela peut (du moins maintenant) être fait avec des options de ligne de commande pour le plugin dependency:tree.

Essayez :

mvn dependency:tree -Doutput=/path/to/file

Référence : Page du plugin de dépendances Maven

Vous n'avez demandé que le format "lisible", mais vous pouvez également passer le paramètre -DoutputType avec diverses options. Notez également que dans la version que j'ai installée, j'obtiens l'avertissement suivant :

[WARNING] The parameter output is deprecated. Use outputFile instead. 

Donc, pensez à l'essayer avec -DoutputFile=/path/to/file

De plus, je n'ai pas réussi à faire en sorte que le paramètre -DoutputType me donne autre chose que le texte par défaut, mais je n'ai pas eu l'occasion de jouer avec. YMMV.

19voto

Anand Ganesh Points 131

Si vous avez plusieurs modules sous le même repo/projet et que vous voulez les dépendances de tous les modules dans un seul fichier, afin de pouvoir faire une différence entre une construction et une autre pour voir si quelque chose a changé quelque part, vous pouvez faire ce qui suit

$project_dir> mvn dependency:tree -DoutputFile=<absolute_path_to_file> -DappendOutput=true

par exemple

$project_dir> mvn dependency:tree -DoutputFile=`pwd`/mvn_dependency_tree.txt -DappendOutput=true

Voir les autres options disponibles sur https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

10voto

Luca Geretti Points 4756

Ajout de la

<plugin>
    <groupId>org.apache.servicemix.tooling</groupId>
    <artifactId>depends-maven-plugin</artifactId>
</plugin>

produit un classes/META-INF/maven/dependencies.properties avec les dépendances du projet facilement analysables.

Exemple de la sortie produite :

# Project dependencies generated by the Apache ServiceMix Maven Plugin
# Generated at: Mon Oct 10 17:43:00 CEST 2011

groupId = my.group.name
artifactId = my.artifact.name
version = 0.0.1-SNAPSHOT
my.group.name/my.artifact.name/version = 0.0.1-SNAPSHOT

# dependencies

junit/junit/version = 4.8
junit/junit/type = jar
junit/junit/scope = test

org.easymock/easymock/version = 2.4
org.easymock/easymock/type = jar
org.easymock/easymock/scope = test

5voto

Piotr Nowicki Points 7565

Sous GNU/Linux, je ferais simplement mvn dependency:tree > myFile . Cependant, si vous ne pouvez utiliser que Windows, je chercherais la syntaxe Windows pour diffuser la sortie d'une commande.

Selon ce site (juste les premiers résultats de Google) il semble que la console de Windows utilise également > pour diriger le flux de sortie vers, par exemple, un fichier. Pourriez-vous essayer ceci ?

2voto

Abhishek Pandey Points 11

J'ai exécuté la commande ci-dessous et j'ai obtenu le fichier contenant toutes les dépendances de Maven.

mvn dependency:tree -DoutputFile=temp/mvn_dependency_tree.txt

Cette commande va créer un dossier nommé "temp" et à l'intérieur de ce dossier un fichier nommé mvn_dependency_tree.txt sera créé avec toutes les dépendances.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X