2009-11-21 9 views
88

Posiadam bibliotekę, którą rozpowszechniam za pomocą programu maven 2. Typowy użytkownik tej biblioteki nie używa programu maven do budowania aplikacji, ale prawdopodobnie jest nieco obeznany z maven i prawdopodobnie go zainstalował.Prosta linia poleceń do pobrania zdalnego artefaktu maven2 do lokalnego repozytorium?

Chciałbym udokumentować "proste" polecenie z jednym wierszem, którego mogą użyć do pobrania artefaktów mojej biblioteki do lokalnego ~/.m2/repository bez konieczności instalowania pliku pom.xml.

Pomyślałem, że był sposób, aby to zrobić, ale nie mogę go znaleźć po przejrzeniu dokumentacji wtyczki install:install-file i dependency. Próbowałem rzeczy jak:

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 

ale myślę, że szczekanie na złe drzewo, ponieważ wydaje się, że plugin zainstalować służy do kopiowania plików lokalnie zbudowany w lokalnym repozytorium, zamiast pobrać zdalnych artefakty do lokalnej magazyn.

ten artefakt Chciałbym zainstalować: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Czy to możliwe przy użyciu maven?

+0

duplikat http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact-in-one- linia poleceń – Isaac

+0

Możliwy duplikat [Jak mogę pobrać konkretny artefakt Mavena w jednym wierszu poleceń?] (http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact -in-one-command-line) – nullpointer

Odpowiedz

127

Od wersji 2.1 Maven Dependency Plugin, istnieje dependency:get cel na ten cel. Aby upewnić się, że używasz odpowiedniej wersji pluginu, trzeba użyć „pełną nazwę”:

 
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

Dodatkowa pomocna przy pokazywaniu, jak zainstalować wtyczkę zależności. –

+1

Pascal, czy możesz mi powiedzieć, jak zdefiniować użytkownika i hasło, aby dotrzeć do repozytorium? Sztuczka z http: // user: password @ repourl nie działa. –

+0

Próbowano również z -DrepositoryId = czymś, co jest zdefiniowane w ustawieniach.xml, dont work –

40

Daj im trywialny pom z tych wymienionych jako zależności słoików i instrukcji do uruchomienia:

mvn dependency:go-offline 

To będzie ciągnąć zależności do lokalnego repo.

Bardziej bezpośredni rozwiązaniem jest dependency:get, ale jest wiele argumentów, aby wpisać:

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

Dobry pomysł, chociaż linia komend mogłaby kopiować i wklejać byłaby łatwiejsza. – emmby

+0

Gdybym mógł wymyślić jedną, umieściłbym ją. Nie wiem o żadnej wtyczce, która robi to, o co prosi. Wiem, jak go napisać ... – bmargulies

+0

Mojo 'get' mojo faktycznie oczekuje, że' -DrepoUrl' będzie obecny, a nie '-DrepositoryUrl'. Odnosząc się do argumentów typu, nie ma magii, musisz podać te informacje w taki czy inny sposób. –

16

Począwszy od wersji 2.4 Maven Dependency Plugin, można również określić miejsce docelowe dla artefakt za pomocą flagi -Destest. Powinien wskazywać nazwę pliku (a nie katalog) dla artefaktu docelowego. Zobacz parameter page dodatkowych parametrów, które mogą być używane

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

Dzięki! -Dest jest oznaczony jako przestarzały. Czy istnieje nowe rozwiązanie? – Dimath

+0

Użyj zależności: zamiast tego skopiuj cel. https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html –

+0

celem kopiowania nie jest kopiowanie przechodniów. – Renato

Powiązane problemy