2009-11-21 5 views
88

Ich habe eine Bibliothek, die ich mit Maven 2 zu verteilen. Der typische Benutzer dieser Bibliothek verwendet Maven nicht, um ihre Anwendungen zu erstellen, aber ist wahrscheinlich etwas vertraut mit Maven und wahrscheinlich hat es installiert.Eine einfache Befehlszeile zum Herunterladen eines Remote-Maven2-Artefakts in das lokale Repository?

Ich möchte einen "einfachen" einzeiligen Befehl dokumentieren, den sie verwenden können, um die Artefakte meiner Bibliothek auf ihre lokale ~/.m2/repository herunterzuladen, ohne dass sie dafür eine pom.xml einrichten müssen.

Ich dachte, es gab eine Möglichkeit, dies zu tun, aber ich kann es nicht finden, nachdem Sie durch die install:install-file und dependency Plugin-Dokumentation. Ich habe versucht, Dinge wie:

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 

aber ich glaube, ich bin auf den Holzweg nach oben, da es scheint, dass die Installation von Plug-in verwendet wird lokal gebaut Dateien in das lokale Repository zu kopieren, anstatt herunterladen Remote-Artefakte in den lokalen Repository.

Dies ist das Artefakt ich installieren möchten: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Ist das möglich Maven verwenden?

+0

Duplizieren von http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact-in-one- verwendet werden können, Befehlszeile – Isaac

+0

Mögliches Duplikat von [Wie kann ich ein bestimmtes Maven-Artefakt in einer Befehlszeile herunterladen?] (http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact in-one-command-line) – nullpointer

Antwort

127

Seit der Version 2.1 der Maven Dependency Plugin gibt es ein dependency:get Ziel. Um sicherzustellen, dass Sie die richtige Version des Plugins verwenden, müssen Sie die „vollqualifizierten Namen“ verwenden:

 
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 
+0

Extra hilfreich, um zu zeigen, wie das Abhängigkeits-Plugin selbst installiert wird. –

+1

Pascal, kannst du mir sagen, wie man Benutzer + Passwort definiert, um das Repository zu erreichen? Der Trick mit http: // user: password @ repourl hat nicht funktioniert. –

+0

Auch versucht mit einem -DrepositoryId = etwas, das in den Einstellungen definiert ist.xml, funktioniert nicht –

40

sie eine triviale pom mit diesen Gläsern Geben Sie als Abhängigkeiten und Anweisungen aufgeführt auszuführen:

mvn dependency:go-offline 

Dadurch werden die Abhängigkeiten der lokalen Repo ziehen.

Eine direkte Lösung ist dependency:get, aber es ist eine Menge Argumente zu geben:

für diesen Zweck
mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version 
+0

Gute Idee, obwohl eine Befehlszeile, die sie kopieren-einfügen könnte einfacher sein würde – emmby

+0

Wenn ich an einen denken könnte, würde ich es posten. Ich kenne kein Plugin, das ziemlich genau das tut, was benötigt wird. Ich weiß, wie man einen schreibt ... – bmargulies

+0

Das 'Get'-Mojo erwartet eigentlich, dass' -DrepoUrl' vorhanden ist, nicht '-DrepositoryUrl'. In Bezug auf die Argumente zum Schreiben gibt es keine Magie, Sie müssen diese Informationen auf die eine oder andere Art bereitstellen. –

16

Ab Version 2.4 der Maven Dependency Plugin, können Sie auch ein Ziel für die definieren Artefakt mit dem -Ddest-Flag. Es sollte auf einen Dateinamen (kein Verzeichnis) für das Zielartefakt verweisen. Siehe die parameter page für zusätzliche Parameter, die

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 
+0

Danke! -Ddest wird als veraltet markiert. Gibt es eine neue Lösung neu? – Dimath

+0

Verwenden Sie die Abhängigkeit: Kopieren Sie stattdessen das Ziel. https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html –

+0

Das Kopierziel kopiert keine transitiven Deps. – Renato

Verwandte Themen