Een eenvoudige opdrachtregel om een ​​extern maven2-artefact naar de lokale repository te downloaden?

Ik heb een bibliotheek die ik distribueer met maven 2. De typische gebruiker van deze bibliotheek gebruikt maven niet om hun applicaties te bouwen, maar is waarschijnlijk enigszins bekend met maven en heeft het waarschijnlijk geïnstalleerd.

Ik wil graag een “eenvoudige” opdracht van één regel documenteren die ze kunnen gebruiken om de artefacten van mijn bibliotheek te downloaden naar hun lokale ~/.m2/repositoryzonder dat ze een pom.xml hoeven in te stellen om het te doen.

Ik dacht dat er een manier was om dit te doen, maar ik kan het niet vinden nadat ik de documentatie van de plug-in install:install-fileen dependencyheb doorgenomen. Ik heb dingen geprobeerd als:

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

maar ik denk dat ik in de verkeerde structuur zit, aangezien het lijkt alsof de installatieplug-in wordt gebruikt om lokaal gebouwde bestanden naar de lokale repository te kopiëren, in plaats van artefacten op afstand naar de lokale repository te downloaden.

Dit is het artefact dat ik wil installeren: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Is dit mogelijk met maven?


Antwoord 1, autoriteit 100%

Sinds versie 2.1 van de Maven Dependency Pluginis er een dependency:getdoel voor dit doel. Om er zeker van te zijn dat u de juiste versie van de plug-in gebruikt, moet u de “volledig gekwalificeerde naam” gebruiken:

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

Antwoord 2, autoriteit 27%

Geef ze een triviale pom met deze potten vermeld als afhankelijkheden en instructies om uit te voeren:

mvn dependency:go-offline

Hiermee worden de afhankelijkheden naar de lokale repo gehaald.

Een meer directe oplossing is dependency:get, maar het zijn veel argumenten om te typen:

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

Antwoord 3, autoriteit 13%

Vanaf versie 2.4 van de Maven Dependency Pluginkunt u ook een doelbestemming definiëren voor de artefact door de vlag -Ddest te gebruiken. Het moet verwijzen naar een bestandsnaam (geen map) voor het doelartefact. Zie de parameterpaginavoor aanvullende parameters die kunnen worden gebruikt

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

Other episodes