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.