85 votes

Comment utiliser Maven pom pour télécharger les fichiers jar uniquement dans un répertoire spécifique ?

Existe-t-il un moyen de télécharger les dépendances d'un fichier pom.xml vers un dossier spécifié en java ? Je suis capable d'exécuter la commande maven depuis java et j'ai obtenu des messages de téléchargement, mais je ne sais pas où maven stocke ces bibliothèques ? Comment puis-je télécharger ces dépendances dans un dossier spécifique ?

127voto

sblundy Points 27163

Jetez un coup d'œil au plugin de dépendance de maven, en particulier à l'option copy-dependencies but. Le site section des usages décrit comment faire exactement ce que vous voulez.

Pour le faire à partir de la ligne de commande, il suffit de faire :

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

Ajoutez ceci pour exclure les dépendances transitives ou internes :

-DexcludeTransitive=true

2 votes

Je rencontre un problème étrange avec cette méthode, elle a téléchargé un fichier .pom pour la dépendance principale mais pour ses sous-dépendances (les dépendances transitives) elle a téléchargé les jars appropriés. Est-ce que je fais quelque chose de mal ?

1 votes

Remarque : sous Windows, utilisez mvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"

11voto

Anthony O. Points 1268

Comme expliqué aquí vous pouvez utiliser maven-dependency-plugin:get pour ça.

Par exemple, si vous voulez télécharger org.apache.hive:hive-common:2.1.1 dans votre dossier local, exécutez ceci :

mvn dependency:get -Ddest=./ -Dartifact=org.apache.hive:hive-common:2.1.1

Si vous voulez télécharger la dernière 3.0.0-SNAPSHOT:tar.gz version de com.orientechnologies:orientdb-community-gremlin de https://oss.sonatype.org/content/repositories/snapshots le dépôt d'instantanés, exécutez ceci :

mvn dependency:get -Ddest=./ -DremoteRepositories=sonatype-nexus-snapshots::::https://oss.sonatype.org/content/repositories/snapshots -Dartifact=com.orientechnologies:orientdb-community-gremlin:3.0.0-SNAPSHOT:tar.gz

7voto

Amar Points 1396

Ajoutez quelque chose de similaire à ce qui suit à pom.xml :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <configuration>
        <outputDirectory>
            ${project.build.directory}
        </outputDirectory>
    </configuration>
</plugin>

Ensuite, exécutez mvn clean dependency:copy-dependencies pour effectuer la copie. Combinez cela avec le plugin d'assemblage et vous pouvez tout regrouper dans une archive autonome pour la distribution.

0 votes

J'ai changé ${project.build.directory} a main\java\resources\libs pour construire ma bibliothèque locale. Merci ! Note : ici, mon chemin est relatif au usr.dir (racine du projet), mais il peut aussi être absolu, comme C:\Mydir . Super !

1voto

frankjl Points 351

Maven stocke tous ces éléments dans son dépôt local Maven2. Par défaut, il les stocke dans le répertoire personnel de votre utilisateur, dans un répertoire appelé repository.

Vous pouvez utiliser l'objectif de maven-dependency-plugin appelé copy pour prendre toutes les dépendances de votre projet et les mettre dans un dossier.

http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html

2 votes

Existe-t-il un autre moyen en java de copier les dépendances puisque je n'écris pas le pom.xml, je ne fais que l'exécuter ?

0voto

Uwe334 Points 45
  1. Allez sur ce site : http://jar-download.com/online-maven-download-tool.php

  2. Insérez le XML des dépendances Maven

  3. Téléchargez les fichiers jar sous forme de ZIP.

13 votes

Je m'abstiendrais de télécharger des .jars par le biais d'un site tiers (quatrième ?), qui sait ce qu'ils ajoutent ou comment ils modifient les archives (malware) ? sblundy a donné une réponse plus directe.

0 votes

Le site est hors service et utilise des API externes

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