Je peux installer un artefact avec install:install-file
, .__, mais comment puis-je télécharger un artefact?
Par exemple:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Vous pouvez utiliser le plugin maven dependency qui a un Nice dependency:get
goal depuis la version 2.1. Pas besoin de pom, tout se passe en ligne de commande.
Pour être sûr de trouver l’objectif dependency:get
, vous devez explicitement indiquer à maven d’utiliser la version 2.1, c’est-à-dire le nom complet du plug-in, y compris la version:
mvn org.Apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
UPDATE: Avec les anciennes versions de Maven (antérieures à 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 à utiliser une version donnée d'un plugin.
Cela peut être fait comme suit:
1. Ajoutez la ligne suivante dans l'élément <settings>
de votre fichier ~/.m2/settings.xml
:
<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, conformément à Introduction au registre de plug-in , les fonctionnalités du plugin-registry.xml
ont été remodelées (pour la portabilité) et le le registre du plug-in est actuellement à l'état semi-dormant dans Maven 2. Je pense donc que nous devons utiliser le nom long pour le moment (lors de l’utilisation du plugin sans pom, ce qui est l’idée derrière dependency:get
).
Avec la dernière version (2.8) du plug-in Maven Dependency , le téléchargement d'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 pour sa merveilleuse réponse en premier lieu. J'ajoute une autre réponse, car cela ne rentrerait pas dans un commentaire et ce serait trop volumineux pour un montage.)
Voici ce qui a fonctionné pour moi pour télécharger la dernière version d'un artefact appelé "composant.jar" avec Maven 3.1.1 à la fin.
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 \
En ce qui concerne l'obtention du fichier binaire de l'artefact, La réponse de Pascal Thivent est-ce, mais pour obtenir également le fichier 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 parce que le paramètre artifact
consiste en réalité en groupId:artifactId:version[:packaging][:classifier]
. Seuls packaging et classifier sont facultatifs.
Avec jar
comme packaging et sources
comme classifier, le plug-in maven dependency comprend que nous demandons le fichier sources, et non le fichier artefact.
Malheureusement pour l'instant, les fichiers jar des sources ne peuvent pas être téléchargés de manière transitoire, ce qui est logique, mais je pense qu'il est également possible de respecter l'option downloadSources
, tout comme le plugin maven Eclipse.
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"
Dépendance pourrait être utilisée: copy ( http://maven.Apache.org/plugins/maven-dependency-plugin/copy-mojo.html ) qui prend une liste des artefacts définis dans la section de configuration du plugin et les copie à 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 plug-in ne peuvent pas être utilisées dans maven CLI. Les propriétés pour lesquelles la propriété "User Property:" a été définie peuvent être spécifiées. Dans l'exemple ci-dessous, je télécharge junit dans mon dossier temporaire et extrait la version 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ù artefact = junit: junit: 4.11 est les coordonnées maven. Et vous spécifiez artifcat comme étant groupId: artifactId: version [: packaging [: classifier]]
(Merci à Pascal Thivent d’avoir fourni sa https://stackoverflow.com/a/18632876/2509415 au début. J'ajoute une autre réponse.)
LATEST
est obsolète, essayez avec la plage [,)
./mvnw org.Apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
-DremoteRepositories=repoId::default::https://nexus/repository/maven-releases/ \
"-Dartifact=com.acme:foo:[,)"
La commande:
mvn install:install-file
Généralement installe l’artefact dans votre référentiel local, vous n’aurez donc pas besoin de le télécharger. Toutefois, si vous souhaitez partager votre artefact avec d'autres personnes, vous devrez le déployer dans un référentiel central. Pour plus d'informations, reportez-vous à la section deploy plugin .
En outre, l’ajout de dependency à votre POM extraira automatiquement les artefacts tiers dont vous avez besoin lors de la construction de votre projet. C'est à dire. Cela téléchargera l'artefact à partir du référentiel central.
Voici un exemple pour obtenir ASM-7 à l'aide de 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 pot à 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