Je peux installer un artefact par install:install-file
, mais comment puis-je télécharger un artefact?
Par exemple:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Je peux installer un artefact par install:install-file
, mais comment puis-je télécharger un artefact?
Par exemple:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Réponses:
Vous pouvez utiliser le plugin de dépendance maven qui a un bel dependency:get
objectif depuis la version 2.1. Pas besoin de pom, tout se passe sur la ligne de commande.
Pour être sûr de trouver l' dependency:get
objectif, vous devez explicitement dire à 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 (antérieures à 2.1), il est possible de s'exécuter dependency:get
normalement (sans utiliser le nom et la version complets) en forçant votre copie de maven à utiliser une version donnée d'un plugin.
Cela peut être fait comme suit:
1. Ajoutez la ligne suivante dans l' <settings>
élément de votre ~/.m2/settings.xml
fichier:
<usePluginRegistry>true</usePluginRegistry>
2. Ajoutez 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 plus fonctionner avec maven 2.1 / 2.2. En fait, selon l' introduction au registre des plugins , les fonctionnalités du plugin-registry.xml
ont été repensées (pour la portabilité) et le registre des plugins est actuellement dans un état semi-dormant dans Maven 2 . Je pense donc que nous devons utiliser le nom long pour le moment (lorsque vous utilisez le plugin sans pom, ce qui est l'idée derrière dependency:get
).
:jar:sources
à l' artefact , voir stackoverflow.com/a/31109185/537554
mvn dependency:get -Dartifact=group-id:artefact-id:version
Avec la dernière version (2.8) du plugin de dépendance Maven , télécharger un artefact depuis le référentiel central Maven est aussi simple que:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]
où 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 d'avoir fourni sa merveilleuse réponse en premier lieu. J'ajoute une autre réponse, car elle ne rentrerait pas dans un commentaire et serait trop longue pour une modification.)
jar:sources
signifie / fait? pourquoi avez-vous besoin de spécifier "jar"? et est-ce que «sources» signifie qu'il téléchargera des dépendances supplémentaires dont l'artefact a besoin?
sources
, un fichier JAR contenant uniquement des sources Java, 3. javadoc
, un fichier JAR avec des documents API uniquement. Voir aussi: Gestionnaires d'artefacts par défaut Maven .
[:classifier]
correctement, si j'ai un fichier zip créé par un plugin assemlby que je veux télécharger.
Voici ce qui a fonctionné pour moi pour 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 fonctionné, principalement en raison des changements de version de maven, je crois)
Cela télécharge le fichier et le copie dans le répertoire de travail local
De bash:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl
, je suppose que c'était implicite de toute façon de mon pom. Aussi je n'ai pas utilisé -Ddest
comme je l' ai fait fait défaut à ce télécharger le régulier .m2
répertoire.
dest
paramètre est obsolète , et peut être remplacé par une invocation de copy
after get
comme ceci: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(dans ce cas, placer le fichier jar dans le répertoire de travail).
Goal requires a project to execute but there is no POM in this directory
.
mvn dependency:copy
(sans d' dependency:get
abord).
Concernant la façon d'obtenir le binaire de l'artefact, la réponse de Pascal Thivent est la suivante, mais pour obtenir également le jar des sources d'artefact, nous pouvons utiliser:
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources
par exemple
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources
Cela fonctionne car le artifact
paramètre se compose en fait de groupId:artifactId:version[:packaging][:classifier]
. Seuls l' emballage et le classificateur sont facultatifs.
Avec jar
comme empaquetage et sources
comme classificateur , le plugin de dépendance maven comprend que nous demandons le jar des sources, pas le jar de l'artefact.
Malheureusement pour le moment, les fichiers jar sources ne peuvent pas être téléchargés de manière transitoire, ce qui est logique, mais idéalement, je pense qu'il peut également respecter l'option, downloadSources
tout comme le fait le plugin maven eclipse.
On pourrait utiliser dependency: copy ( http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html ) qui prend une liste d'artefacts définis dans la section de configuration du plugin et les copie dans un emplacement spécifié , en les renommant ou en supprimant la version si vous le souhaitez. Cet objectif peut résoudre les artefacts des référentiels distants s'ils n'existent ni dans le référentiel local ni dans le réacteur.
Toutes les propriétés du plugin ne peuvent pas être utilisées dans maven CLI. Les propriétés dont la propriété "Propriété utilisateur:" est définie peuvent être spécifiées. Dans l'exemple ci-dessous, je télécharge junit dans mon dossier temporaire et supprime la vesion du fichier jar.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
où artifact = junit: junit: 4.11 est les coordonnées maven. Et vous spécifiez artifcat comme groupId: artifactId: version [: packaging [: classifier]]
(Merci à Pascal Thivent d'avoir fourni son https://stackoverflow.com/a/18632876/2509415 en premier lieu. J'ajoute une autre réponse)
une doublure pour télécharger le dernier artefact maven sans mvn:
curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"
L'utilisation de la documentation officielle:
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get
Pour mon cas, voir la réponse ci-dessous:
mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6
#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.
Utilisez la commande "mvn dependency: get" pour télécharger un aritfact spécifique et utilisez la commande "mvn dependency: copy" pour copier l'artefact téléchargé dans le répertoire dest "-DoutputDirectory"
Voici un exemple pour obtenir ASM-7 en utilisant Maven 3.6:
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
Ou vous pouvez télécharger le fichier à partir d'ici: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm puis
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar
La commande:
mvn install:install-file
En règle générale installe l'artefact dans votre dépôt local, de sorte que vous ne devriez pas avoir à le télécharger. Cependant, si vous souhaitez partager votre artefact avec d'autres, vous devrez déployer l'artefact dans un référentiel central, voir le plugin de déploiement pour plus de détails.
De plus, l'ajout d'une dépendance à votre POM récupérera automatiquement tous les artefacts tiers dont vous avez besoin lorsque vous générez votre projet. Ie Cela téléchargera l'artefact depuis le référentiel central.