Comment puis-je télécharger un artefact Maven dans une ligne de commande?
Je peux installer un artefact en install:install-file
,
mais comment puis-je télécharger un artefact?
Par exemple:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
- Méfiez-vous que le plugin veut 'repoUrl", malgré la documentation en disant: "repositoryUrl'. Cela peut conduire u fou comme il l'a fait pour moi!
- les docs (maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html) indique à la fois le xml params (<repositoryUrl>...</repositoryUrl>) et de la ligne de commande par l'utilisateur propriétés (mvn ... -DrepoUrl="..."). Cet exemple particulier est obsolète, donc pas de soucis; maintenant, c'est maintenant uniformément remoteRepositories (dans les deux usages); mais notez que le paramètre "destination" est une propriété de l'utilisateur "-Ddest=...", par exemple;=> mvn org.apache.maven.plugins:maven-dépendance-plugin:2.5.1:get-DremoteRepositories=repo.maven.apache.org -Dartifact=org.apache.ant:ant:1.8.1 -Ddest=ant-1.8.1.jar (résultat: ant-1.8.1.jar dans le répertoire courant)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le maven dependency plugin qui a une belle
de la dépendance:get
but depuis la version 2.1. Pas besoin d'un pom, tout se passe sur la ligne de commande.Pour vous assurer de trouver le
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: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 dans le
<settings>
élément de votre~/.m2/settings.xml
fichier:2. Ajouter le fichier
~/.m2/plugin-registry.xml
avec le contenu suivant:Mais cela ne semble pas fonctionner avec maven 2.1/2.2. En effet, selon les Introduction à la Plugin 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èredependency:get
).:jar:sources
à la artefact, voir stackoverflow.com/a/31109185/537554mvn dependency:get -Dartifact=group-id:artefact-id:version
Avec la dernière version (2.8) de la Maven Dependency Plugin, le téléchargement d'un artefact dans le Dépôt Central de Maven est aussi simple que:
où
groupId:artifactId:version
, etc. sont les Maven coordonnéesUn exemple, testé avec Maven 2.0.9, Maven 2.2.1, et Maven 3.0.4:
(Merci à Pascal Thivent de la fourniture de ses magnifique réponse en premier lieu. Je suis ajoutant une autre réponse, car il ne rentrait pas dans un commentaire, et il serait trop vaste pour un edit.)
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)
Cela télécharge le fichier et copie dans le répertoire local de travail
De bash:
-DrepoUrl
, je suppose que c'était implicite de mon pom de toute façon. Je n'ai pas l'utilisation-Ddest
comme je l'ai fait ne vous voulez télécharger régulier de la.m2
répertoire.dest
paramètre est obsolète, et peut être remplacé par un invokation decopy
aprèsget
comme suit:mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(dans ce cas, placer le pot dans le répertoire de travail).Goal requires a project to execute but there is no POM in this directory
.mvn dependency:copy
(sansdependency:get
premier).Qui concerne la façon d'obtenir l'artefact binaire, Pascal Thivent réponse est-ce, mais aussi pour obtenir l'artefact sources de pot, on peut utiliser:
par exemple
Cela fonctionne parce que les
artefact
paramètre se compose en réalité degroupId:artifactId:version[:packaging][:classifier]
. Juste le emballage et classificateur sont facultatifs.Avec
jar
comme emballage etsources
comme classificateur, la dépendance maven plugin comprend nous demandons pour les sources de pot, pas l'artefact jar.Malheureusement, pour l'instant, les sources des fichiers jar ne peuvent pas être téléchargés de manière transitive, qui ne fait sens, mais, idéalement, je crois qu'il peut aussi respecter l'option
downloadSources
tout comme le maven eclipse plugin ne.un liner pour télécharger le dernier artefact maven sans mvn:
Que l'on pourrait utiliser de la dépendance:copie (http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html) qui prend une liste d'artefacts définie dans la section de configuration du plugin et les copie dans un emplacement spécifié, le renommer ou le décapage de la version si vous le souhaitez. Cet objectif peut résoudre les objets des dépôts distants si elles n'existent pas dans le référentiel local ou le réacteur.
Pas toutes les propriétés du plugin peut être utilisé dans maven de la CLI. Les propriétés qui ont "Propriété de l'Utilisateur:" bien définis peuvent être précisées. Dans l'exemple ci-dessous, je suis le téléchargement de junit pour mon dossier temp et le décapage de la vesion du fichier jar.
où
artefact=junit:junit:4.11 est le maven coordonnées. Et vous spécifiez artifcat que groupId:artifactId:version:emballage[:classificateur]]
(Merci à Pascal Thivent de la fourniture de ses https://stackoverflow.com/a/18632876/2509415 en premier lieu. Je suis ajoutant une autre réponse)
La commande:
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'un la 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.
Voici un exemple pour obtenir de l'ASM-7 à l'aide de Maven 3.6:
Ou vous pouvez télécharger le jar à partir d'ici: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm et puis
LATEST
est obsolète, essayez avec la gamme[,)