web-dev-qa-db-fra.com

Une simple ligne de commande pour télécharger un artefact maven2 distant dans le référentiel local?

J'ai une bibliothèque que je distribue à l'aide de maven 2. L'utilisateur type de cette bibliothèque n'utilise pas maven pour créer ses applications, mais il est probablement un peu familier avec maven et l'a probablement installé.

Je voudrais documenter une "simple" commande d'une ligne qu'ils peuvent utiliser pour télécharger les artefacts de ma bibliothèque dans leur ~/.m2/repository Local sans exiger qu'ils configurent un fichier pom.xml.

Je pensais qu'il y avait un moyen de faire cela, mais je n'arrive pas à le trouver après avoir consulté la documentation du plugin install:install-file Et dependency. J'ai essayé des choses comme:

mvn install:install-file -DrepositoryId=Java.net -Durl=http://download.Java.net/maven/2/ -Dfile=robo-guice-0.4-20091121.174618-1.jar -DpomFile=robo-guice-0.4-20091121.174618-1.pom -DgroupId=robo-guice -DartifactId=robo-guice -Dversion=0.4-SNAPSHOT -Dpackaging=jar

mais je pense que je me trompe d'arborescence puisqu'il semble que le plug-in d'installation soit utilisé pour copier des fichiers créés localement dans le référentiel local, plutôt que de télécharger des artefacts distants dans le référentiel local.

Voici l'artefact que j'aimerais installer: http://download.Java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Est-ce possible d'utiliser maven?

110
emmby

Depuis la version 2.1 du Maven Dependency Plugin , il existe un objectif dependency: get à cet effet. Pour vous assurer que vous utilisez la bonne version du plugin, vous devez utiliser le "nom complet":

 mvn org.Apache.maven.plugins: maven-dependency-plugin: 2.1: get\
 -DrepoUrl = http: //download.Java.net/maven/2/\
 -Dartifact = robo-guice: robo-guice: 0.4-SNAPSHOT 
159
Pascal Thivent

Donnez-leur un pom trivial avec ces jars répertoriés comme dépendances et instructions pour exécuter:

mvn dependency:go-offline

Cela va tirer les dépendances vers le référentiel local.

Une solution plus directe est dependency: get , mais il y a beaucoup d'arguments à taper:

mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version
43
bmargulies

À partir de la version 2.4 du plug-in Maven Dependency , vous pouvez également définir une destination cible pour l'artefact à l'aide de l'indicateur -Ddest. Il devrait pointer sur un nom de fichier (et non sur un répertoire) pour l'artefact de destination. Voir le page de paramètres pour plus de paramètres pouvant être utilisés

mvn org.Apache.maven.plugins:maven-dependency-plugin:2.4:get \
    -DremoteRepositories=http://download.Java.net/maven/2 \
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT \
    -Ddest=c:\temp\robo-guice.jar
19
Eric B.