102 votes

Liste des fichiers jar de dépendance dans Maven

À l'aide de Maven 2, est-il un moyen que je puisse les énumérer le pot de dépendances que seulement les noms de fichiers?

mvn dependency:build-classpath

la liste des fichiers jar, mais qui va inclure le chemin d'accès complet à leur emplacement dans mon dépôt local. Ce dont j'ai besoin est essentiellement juste une liste des noms de fichiers (ou les noms de fichier que le copier-dépendances objectif de copie).

Donc, la liste j'ai besoin serait quelque chose comme

activation-1.1.jar,antlr-2.7.6.jar,aopalliance-1.0.jar etc...

idéalement en tant que maven bien, mais je pense, un fichier de type construction-classpath peut générer le fera.

Ce que je cherche à atteindre est la rédaction d'un Bundle-ClassPath à un autre gérés manuellement MANIFESTE.MF fichier pour un bundle OSGi. (Vous ne devriez pas avoir besoin de comprendre ce bit à répondre à la question.)

Pour clarifier: La question n'est pas sur la façon d'écrire le manifeste des en-têtes dans le MANIFESTE.MF fichier dans un bocal (qui est facilement googleble). Je suis en demandant au sujet de comment obtenir les données que je veux écrire, à savoir la liste indiquée ci-dessus.

120voto

Anis Points 121

Cette commande générera l’arborescence des dépendances de votre projet maven:

 $ mvn dependency:tree
 

Je suis sûr que le résultat vous plaira :-)

21voto

Gabe Mc Points 343

Du mieux que je peux dire, vous ne pouvez pas obtenir exactement ce que la sortie, avec les virgules et sans espace. Les deux via la ligne de commande et par l'pom.xml fichier, le maven-dépendance-plugin ou de la CLI freaks si vous spécifiez des espaces ou l' " (chaîne vide) comme un substitut soit avec pathSeparator ou fileSeparator. Ainsi, vous pouvez être forcé de faire quelque chose d'un compromis. Vous pouvez

 mvn dependency:construire-classpath -Dmdep.pathSeparator=":" -Dmdep.prefix=" -Dmdep.fileSeparator=":" -Dmdep.outputFile=classpath

Toutefois, cela devrait vous donner une liste complète, séparés par '::' au lieu de simplement en ',', mais il fonctionne. Si vous exécutez:

 mvn dependency:construire-classpath -Dmdep.pathSeparator="@REPLACEWITHCOMMA" -Dmdep.prefix=" -Dmdep.fileSeparator="@" -Dmdep.outputFile=classpath

et la joindre à l' generate-resources de phase et filtre de ressources, plus tard, par la définition de la propriété correcte dans l' process-resources phase du cycle de vie, vous devriez être en mesure d'obtenir juste la virgule.

Vous pouvez voir la liste complète des options: http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html

4voto

sblundy Points 27163

Avez-vous regardé l' Apache Felix projet? Il a un gâchis de plugins, y compris un bundle plugin qui devrait faire ce que vous voulez.

Aussi, avez-vous essayé l' <addClasspath> balise <manifestFile>? Que devrait avoir l'effet désiré de la fusion du classpath dans votre manifeste.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  ...
  <configuration>
    <archive>
      <addClasspath>true</addClasspath>
      <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
    </archive>
  </configuration>
  ...
</plugin>

3voto

Kevin Wright Points 31665

Il se peut que quelque chose me manque ici, mais comme vous avez déjà utilisé les dépendances de copie, cela ressemble à ce que vous recherchez vraiment, c'est juste une liste de fichiers dans un répertoire spécifié.

Ant peut le faire pour vous sans aucun problème, tout comme un script shell.

2voto

Davide Gualano Points 5832

Maven peut créer automatiquement le chemin de classe dans votre manifeste: http://maven.apache.org/guides/mini/guide-manifest.html

C'est une configuration du plugin d'archive Maven.

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