2010-08-30 5 views
30

Ich möchte etwas wie das folgende mögen.Wie man Gläser von Maven Central herunterlädt, ohne irgendeine pom.xml zu schreiben

Ich möchte nur ein Dienstprogramm, das in der Lage ist, JARS und ihre Abhängigkeiten aus dem Maven-Repository zu laden, ohne irgendwelche Einschränkungen zu auferlegen, wie mein Projekt aufgebaut werden sollte.

würde ich so etwas wie dies mag:

download-jar --dest=lib/ 'commons-io:commons-io:jar:1.4' 

Es sollte auch die Abhängigkeiten herunterladen können.

Update:

Ich würde nicht wissen, über eine pom.xml strukturiert werden soll.

Die einzige Aufgabe, die ich erfüllen muss, ist der Download der Gläser, ich hätte gerne ein Werkzeug, das diese Aufgabe erfüllen könnte, die mich nicht mit überflüssigen Informationen stört.

Es ist so etwas?

+0

Ich glaube nicht, das ein Duplikat ist, weil die referenzierte Frage deps auf den lokalen m2 Repo, während diese Frage gibt an in Bezug auf das Abrufen " ohne Einschränkungen aufzuerlegen "mit einem Beispiel, das ein benutzerdefiniertes Ziel zeigt (lib /). – Chris2048

+0

stimme ich voll und ganz zu. Und die Antwort ist: mvn -Dartifact=commons-io:commons-io:1.4:jar -DoutputDirectory=$(pwd) -Dpackaging=jar dependency:copy user1050755

+0

Verbesserte Argument Reihenfolge: mvn Abhängigkeit: Kopieren -DoutputDirectory = $ (pwd) -Dartifact = commons-io: commons-io: 1.4: jar – user1050755

Antwort

46

Wenn Sie Maven Abhängigkeiten in Ihrem lib herunterladen möchten die Abhängigkeit Plugin mit der copy-dependencies-Funktion verwenden.

mvn -DoutputDirectory=./lib -DincludeArtifactIds=commons-logging,commons-io dependency:copy-dependencies 

Ohne die -DincludeArtifactIds Teil Sie jede Abhängigkeit herunterladen werden.

Wenn Sie ein bestimmtes Projekt ohne einen ein Artefakt herunterladen möchten * siehe unten **:

mvn -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 dependency:get 

Ressourcen:

zum gleichen Thema:

Interessante Kommentare:

  • * @ Pascal Thivent:

    Keine Notwendigkeit für das Einrichten eines POM, keine Notwendigkeit, Ihr eigenes Tool, verwenden Sie mvn Abhängigkeit zu entwickeln: bekommen.Das ist die richtige Antwort auf diese Frage.

+0

Vielen Dank. Dies erfordert eine ordnungsgemäße pom.xml. Das ist das Denken, das ich vermeiden würde. Kennen Sie einen Weg, um das gleiche Ergebnis zu erhalten, ohne den Pom zu definieren? –

+0

Das Erstellen eines geeigneten maven pom.xml und das Herunterladen der Abhängigkeiten dauert ca. 5 Minuten. Wenn Sie eine andere Software einrichten und sie so konfigurieren, dass sie die Bibliothek abreibt und POM.xmls für Ihre Abhängigkeiten parst und diese Abhängigkeiten rekursiv herunterlädt, dauert das etwas länger. –

+8

@Chris Keine Notwendigkeit, ein POM einzurichten, keine Notwendigkeit, ein eigenes Werkzeug zu entwickeln, verwenden Sie 'mvn Abhängigkeit: get'. –

0

Werfen Sie einen Blick auf Ivy. Es ermöglicht die Abhängigkeitsauflösung von Maven-Repositories ohne die Overkill-Komplexität von Maven selbst.

15

Ich hatte auch -DrepoUrl angeben, nachdem die Fehlermeldung erhalten:

Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get 
    (default-cli) on project standalone-pom: The parameters 'repositoryUrl' 
    for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get are 
    missing or invalid -> [Help 1] 

So, hier ist der Befehl, den ich verwendet:

mvn -DgroupId=edu.umd -DartifactId=cloud9 -Dversion=1.3.5 \ 
    -DrepoUrl="http://repo1.maven.org/maven2" dependency:get 

Furthemore, -Ddest=~ arbeiten nicht. Es bestand immer darauf, das Glas auf ~/.m2/repository zu installieren.

+0

DANKE !!! Das war super hilfreich für mich. Keine 'pom.xml' benötigt;) – steve

+0

Was ist mit dem' \\ 'in der Mitte des Befehls? -_- –

+0

"\" ermöglicht das Kopieren - Einfügen des Befehls in das Terminal- oder Shell-Skript. Andernfalls würden die Zeilenumbrüche die Ausführung jeder Zeile einzeln auslösen. Es könnte eine lange Zeile sein, aber SO verwendet leider nicht "white-space: pre-wrap", also werden zu lange Zeilen abgeschnitten. – chbrown

5

Maven3 verwendet Abhängigkeit Plugin v2.1 von Standard:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

Mit Maven2 ist immer noch notwendig, den kanonischen Namen zu schreiben:

$ mvn2 org.apache.maven.plugins:maven-dependency-plugin:2.1:get \ 
    -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

Mit dem Parameter artifact den Namen eingeben des Artefakts als Gruppe: Artefakt: Version:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:1.4 

Verwenden LATEST die neueste Version des Artefakts zum Download:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:LATEST 
+0

Was ist mit dem '\\' in der Mitte des Befehls? -_- –

+0

@IulianOnofrei nichts mit 'mvn' zu tun :) Das Zeichen '\' wird in bash verwendet, um einen Befehl zu verketten, der in zwei oder mehr Zeilen aufgeteilt ist. Http://stackoverflow.com/questions/3871332/how-to- Tell-Bash-dass-die-Linie-weiter-auf-der-nächsten-Linie –

+0

Ich sehe, ich war genervt es funktionierte nicht, bis ich realisierte, dass ich das löschen muss, also ist das ein Nachteil für unerfahrene Windows-Benutzer aber :( –

Verwandte Themen