237 votes

Comment puis-je télécharger un artefact Maven dans une ligne de commande?

Je peux installer un artefact par l'installer:installez le fichier, mais comment puis-je les télécharger, par exemple:

mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST

une idée?

247voto

Pascal Thivent Points 295221

Vous pouvez utiliser la dépendance maven plugin qui a une belle dependency:get objectif depuis la version 2.1. Pas besoin d'un pom, tout se passe sur la ligne de commande.

Pour vous assurer de trouver l' dependency:get but, il faut explicitement indiquer à maven d'utiliser la version 2.1, c'est à dire que vous devez utiliser le nom complet du plugin, y compris la version:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl=url \
    -Dartifact=groupId:artifactId:version

Mise à JOUR: Avec les anciennes versions de Maven (avant 2.1), il est possible d'exécuter dependency:get normalement (sans utiliser le nom complet et la version) en forçant votre copie de maven, d'utiliser une version d'un plugin.

Cela peut être fait comme suit:

1. Ajoutez la ligne suivante au sein de l' <settings> élément de votre ~/.m2/settings.xml le fichier:

<usePluginRegistry>true</usePluginRegistry>

2. Ajouter le fichier ~/.m2/plugin-registry.xml avec le contenu suivant:

<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <useVersion>2.1</useVersion>
      <rejectedVersions/>
    </plugin>
  </plugins>
</pluginRegistry>

Mais cela ne semble pas fonctionner avec maven 2.1/2.2. En fait, selon l' Introduction de l'extension de Registre, les caractéristiques de l' plugin-registry.xml ont été redessinés (pour la portabilité) et le plugin de registre est actuellement dans un semi-état de dormance dans Maven 2. Donc, je pense que nous devons utiliser le nom long pour le moment (lors de l'utilisation du plugin sans un pom, qui est l'idée derrière le dependency:get).

122voto

Danilo Piazzalunga Points 3248

Avec la dernière version (2.8) de la Dépendance Maven Plugin, le téléchargement d'un artefact dans le Dépôt Central de Maven est aussi simple que:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]

groupId:artifactId:version, etc. sont les coordonnées Maven

Un exemple, testé avec Maven 2.0.9, Maven 2.2.1, et Maven 3.0.4:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources

(Merci à Pascal Thivent pour ses merveilleux réponse à la première place. Je suis ajoutant une autre réponse, car il ne rentrait pas dans un commentaire, et il serait trop vaste pour une modification.)

62voto

verveguy Points 931

Voici ce qui a fonctionné pour moi de télécharger la dernière version d'un artefact appelé "component.jar" avec Maven 3.1.1 à la fin (d'autres suggestions n'ont pas, en raison principalement de maven changements de version je crois)

En fait, cela télécharge le fichier et copie dans le répertoire local de travail

De bash:

mvn dependency:get \
    -DrepoUrl=http://.../ \
        -Dartifact=com.foo.something:component:LATEST:jar \
        -Dtransitive=false \
        -Ddest=component.jar \

0voto

Clinton Points 2413

La commande:

mvn install:install-file

Généralement installe l'artefact dans votre dépôt local, de sorte que vous ne devriez pas avoir à le télécharger. Toutefois, si vous voulez partager votre artefact avec les autres, vous aurez besoin de déployer l'objet d'un dépôt central de voir le déployer plugin pour plus de détails.

En outre, l'ajout d'une dépendance à votre POM va récupérer automatiquement des tiers artefacts, que vous avez besoin quand vous en avez à construire votre projet. I. e. Ceci va télécharger l'artefact dans le référentiel central.

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