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.
Réponses
Trop de publicités?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.
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
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
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 ?
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.
- Réponses précédentes
- Plus de réponses