Uzak bir maven2 yapısını yerel depoya indirmek için basit bir komut satırı mı?


123

Maven 2 kullanarak dağıttığım bir kitaplığım var. Bu kitaplığın tipik kullanıcısı uygulamalarını oluşturmak için maven'ı kullanmıyor, ancak muhtemelen maven'e aşinadır ve muhtemelen yüklemiştir.

Kitaplığımın eserlerini ~/.m2/repositoryyerellerine indirmek için kullanabilecekleri "basit" tek satırlık bir komutu , bunu yapmak için bir pom.xml kurmalarına gerek kalmadan belgelemek istiyorum.

Bunu yapmanın bir yolu var sandım ama gözden geçirdikten sonra bulmak gibi olamaz install:install-fileve dependencybelgelere eklentisi. Şöyle şeyler denedim:

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

ancak sanırım yanlış ağaca bakıyorum çünkü yükleme eklentisi, uzak yapıları yerel depoya indirmek yerine yerel olarak oluşturulmuş dosyaları yerel depoya kopyalamak için kullanılıyor.

Yüklemek istediğim yapı budur: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Bu maven kullanarak mümkün mü?



Olası kopyası Belirli bir Maven
Naman

Yanıtlar:


168

Maven Bağımlılık Eklentisinin 2.1 sürümünden bu yana , bir bağımlılık vardır: bu amaç için hedef alın . Eklentinin doğru sürümünü kullandığınızdan emin olmak için "tam nitelikli adı" kullanmanız gerekir:

mvn org.apache.maven.plugins: maven-bağımlılık-eklentisi: 2.1: get \
    -DrepoUrl = http: //download.java.net/maven/2/ \
    -Dartifact robot guice =: robot guice: 0,4-SNAPSHOT

Bağımlılık eklentisinin kendisinin nasıl kurulacağını göstermek için ekstra faydalıdır.
Sergio Acosta

2
Pascal, depoya ulaşmak için kullanıcı + şifreyi nasıl tanımlayacağımı söyleyebilir misin? User: password @ repourl ile ilgili hile işe yaramadı.
Gábor Lipták

4
amaç güzel, ancak dosyanın kopyalanmasını istediğim hedef dizini nasıl tanımlayabilirim? (ve dosya adı)
domi

9
@domi (gelecek nesiller için geç yanıt): "-Dest = yol / / için / jarım" kullanın; aksi takdirde, yerel ~ / .m2 / deponuza kopyalanır (hiçbir şey olmamış gibi görünmesini sağlar). Bkz. Maven.apache.org/plugins/maven-dependency-plugin/… = example => mvn org.apache.maven.plugins: maven-dependency-plugin: 2.5.1: get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant: ant: 1.8.1 -Ddest = ant-1.8.1.jar (sonuç: mevcut dizinde ant-1.8.1.jar)
michael

3
Teşekkürler! Gönderdiğiniz belge bağlantısında, Deprecated. Use remoteRepositoriesiçin var repoUrl. Lütfen cevabı güncelleyin :)
Hafta sonu

47

Bağımlılıklar ve çalıştırma talimatları olarak listelenen bu kavanozlarla onlara önemsiz bir pom verin:

mvn dependency:go-offline

Bu, bağımlılıkları yerel depoya çekecektir.

Daha doğrudan bir çözüm bağımlılıktır: get , ancak yazılması gereken çok fazla argüman var:

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

İyi fikir, kopyalayıp yapıştırabilecekleri bir komut satırı olmasına rağmen daha kolay olurdu
emm

Bir tane düşünebilseydim gönderirdim. İstenilen şeyi yapan herhangi bir eklenti bilmiyorum. Nasıl yazılacağını biliyorum ...
bmargulies

getMojo aslında beklediğini -DrepoUrl, mevcut olmamak -DrepositoryUrl. Yazılacak argümanlarla ilgili olarak, sihir yoktur, bu bilgileri bir şekilde sağlamanız gerekir.
Pascal Thivent

İlk şemamda, son kullanıcı yalnızca üç karakter yazıyor: mvn. Diğer tüm yazım işlemleri op tarafından yapılır.
bmargulies

22

Maven Bağımlılık Eklentisinin 2.4 sürümünden itibaren , -Dest bayrağını kullanarak yapı için bir hedef hedef de tanımlayabilirsiniz. Hedef yapıt için bir dosya adını (bir dizini değil) göstermelidir. Kullanılabilecek ek parametreler için parametre sayfasına bakın

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

2
Teşekkürler! -Dest, kullanımdan kaldırıldı olarak işaretlendi. Yeni bir çözüm var mı?
Dimath

1
Bağımlılık kullanın: bunun yerine hedefi kopyalayın. maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
Eric B.

3
kopyalama hedefi geçişli dağıtımları kopyalamaz.
Renato
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.