Je travaille sur un gros projet avec de nombreux fichiers pom.xml et j'ai besoin de spécifier toutes les bibliothèques que j'utilise. Cela signifie que je dois lire les fichiers pom.xml de manière récursive et obtenir groupId, artifactId, scope et version. J'ai vérifié la dépendance mvn: 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 en cmd. J'ai vu quelques solutions faites sous Linux mais je n'ai accès qu'à Windows XP.
Cela peut (au moins maintenant) être fait avec des options de ligne de commande pour le plugin dependency: tree.
Essayer:
mvn dependency:tree -Doutput=/path/to/file
Référence: Page du plug-in de dépendance Maven
Vous avez uniquement posé des questions sur le format "lisible", mais vous pouvez également passer le paramètre -DoutputType avec diverses options. Notez également que la version que j'ai installée, j'obtiens l'avertissement suivant:
[WARNING] The parameter output is deprecated. Use outputFile instead.
Alors, pensez à l'essayer avec -DoutputFile =/path/to/file
De plus, je n'ai pas pu obtenir le paramètre -DoutputType pour me donner autre chose que le texte par défaut, mais je n'ai pas eu l'occasion de jouer avec. YMMV.
Ajout du
<plugin>
<groupId>org.Apache.servicemix.tooling</groupId>
<artifactId>depends-maven-plugin</artifactId>
</plugin>
le plugin produit un classes/META-INF/maven/dependencies.properties
fichier avec les dépendances du projet facilement analysable.
Exemple de 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
Sur GNU/Linux, je ferais simplement mvn dependency:tree > myFile
. Cependant, si vous êtes limité à Windows uniquement, je rechercherais la syntaxe de Windows pour diffuser la sortie d'une commande.
Selon ce site (juste un top-résultats de Google), il semble que la console de Windows utilise également >
signe pour diriger le flux de sortie vers un fichier. Pourriez-vous essayer cela?
Si vous avez plusieurs modules sous le même repo/projet et que vous voulez les dépendances de tous les modules dans un fichier, afin de pouvoir différencier n/b une construction et une autre pour voir si quelque chose a changé quelque part, vous pouvez faire
$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
effective-pom (en conjonction avec certaines commandes linux pour enregistrer le fichier) peut être suffisant pour vos besoins.
Vous pouvez toujours installer MinGW et MSYS puis utiliser les exemples Linux en utilisant dependency:tree
sous Windows