Bir yapı yükleyebilirim install:install-file
, ancak bir yapı nasıl indirebilirim?
Örneğin:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Bir yapı yükleyebilirim install:install-file
, ancak bir yapı nasıl indirebilirim?
Örneğin:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Yanıtlar:
2.1 sürümünden bu yana güzel bir hedefi olan maven bağımlılık eklentisini kullanabilirsiniz dependency:get
. Pom'a gerek yok, her şey komut satırında gerçekleşiyor.
dependency:get
Hedefi bulacağınızdan emin olmak için , maven'e 2.1 sürümünü kullanmasını açıkça söylemeniz gerekir, yani sürüm dahil eklentinin tam adını kullanmanız gerekir:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
GÜNCELLEME: Maven'in eski sürümlerinde (2.1'den önce), dependency:get
maven kopyanızı belirli bir eklentinin belirli bir sürümünü kullanmaya zorlayarak normal şekilde (tam adı ve sürümü kullanmadan) çalıştırmak mümkündür .
Bu şöyle yapılabilir:
1. Dosyanızın <settings>
öğesine şu satırı ekleyin ~/.m2/settings.xml
:
<usePluginRegistry>true</usePluginRegistry>
2. ~/.m2/plugin-registry.xml
Aşağıdaki içeriklere sahip dosyayı ekleyin :
<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<useVersion>2.1</useVersion>
<rejectedVersions/>
</plugin>
</plugins>
</pluginRegistry>
Ama bu artık maven 2.1 / 2.2 ile çalışmıyor gibi görünüyor. Aslında, Eklenti Kaydına Giriş'e göre , özelliklerinin plugin-registry.xml
yeniden tasarlandığı (taşınabilirlik için) ve eklenti kayıt defteri şu anda Maven 2 içinde yarı uyuyan bir durumda . Bu yüzden şimdilik uzun ismi kullanmamız gerektiğini düşünüyorum (eklentiyi pom olmadan kullanıyoruz, bu da arkasındaki fikir dependency:get
).
:jar:sources
üzere eser , bkz stackoverflow.com/a/31109185/537554
mvn dependency:get -Dartifact=group-id:artefact-id:version
Maven Dependency Plugin'in en son sürümü (2.8) ile Maven Central Repository'den bir eser indirmek şu kadar basit:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]
Maven koordinatları nerede groupId:artifactId:version
vs.
Maven 2.0.9, Maven 2.2.1 ve Maven 3.0.4 ile test edilmiş bir örnek:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources
( İlk etapta harika cevabını verdiği için Pascal Thivent'e teşekkürler . Başka bir cevap ekliyorum, çünkü bir yoruma uymayacak ve bir düzenleme için çok geniş olacaktır.)
jar:sources
anlama geldiğini / ne anlama geldiğini açıklayabilir misiniz ? neden "kavanoz" belirtmeniz gerekiyor? ve "kaynaklar", yapının gerektirdiği ek bağımlılıkları indireceği anlamına mı geliyor?
sources
, yalnızca Java kaynaklarını içeren bir JAR dosyası, 3. javadoc
, yalnızca API belgelerine sahip bir JAR dosyası. Ayrıca bkz: Maven Varsayılan Artefakt İşleyicileri .
[:classifier]
İndirmek istediğim bir assemlby eklentisi oluşturulan zip dosyası varsa , doğru kullanmayı açıklayan hakkında teşekkür ederiz .
İşte sonunda Maven 3.1.1 ile "component.jar" adlı bir eserin en son sürümünü indirmek için benim için çalıştı (diğer öneriler, çoğunlukla inanıyorum maven sürüm değişiklikleri nedeniyle)
Bu aslında dosyayı indirir ve yerel çalışma dizinine kopyalar
Bash'den:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl
, sanırım yine de pom dan ima edildi. Ayrıca kullandığım vermedi -Ddest
Aslında olarak yaptığımız düzenli indirmek istediğiniz .m2
dizine.
dest
Parametre kaldırıldı ve bir invokation ile ikame edilmiş olabilir copy
sonra get
şöyle: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(çalışma dizininde kavanoz yerleştirerek bu durumda).
Goal requires a project to execute but there is no POM in this directory
.
mvn dependency:copy
( dependency:get
ilk olmadan ).
Artefakt ikiliğini nasıl alacağınıza gelince, Pascal Thivent'in cevabı budur, ancak artefakt kaynakları kavanozunu almak için şunları kullanabiliriz:
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources
Örneğin
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources
Bu, artifact
parametre gerçekte oluştuğu için çalışır groupId:artifactId:version[:packaging][:classifier]
. Sadece ambalaj ve sınıflandırıcı isteğe bağlıdır.
İle jar
olduğu gibi ambalaj ve sources
sıra sınıflandırıcı , maven bağımlılık eklenti biz kaynaklar kavanoz değil, yapay kavanoz için soruyorsun anlar.
Ne yazık ki şimdilik kaynaklar jar dosyaları geçici olarak indirilemiyor, bu da mantıklı, ama ideal downloadSources
olarak maven eclipse eklentisinin yaptığı gibi seçeneğe de saygı gösterebileceğine inanıyorum .
Bağımlılık kullanılabilir: eklenti yapılandırma bölümünde tanımlanan eserlerin bir listesini alan ve bunları belirtilen bir konuma kopyalayan copy ( http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html ). , yeniden adlandırma veya istenirse sürümü sıyırma. Bu amaç, yerel depoda veya reaktörde bulunmuyorsa uzak depolardaki yapay nesneleri çözebilir.
Eklentinin tüm özellikleri maven CLI'de kullanılamaz. "User Property:" özelliği tanımlanmış özellikler belirlenebilir. Aşağıdaki örnekte tempit'ime junit indiriyorum ve jar dosyasından vesionu soyuyorum.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
burada artefakt = junit: junit: 4.11 maven koordinatlarıdır. Ve artifcat'i groupId: artifactId: version [: packing [: classifier]] olarak belirtirsiniz.
( İlk başta https://stackoverflow.com/a/18632876/2509415 adresini sağladığı için Pascal Thivent'e teşekkürler . Başka bir cevap ekliyorum)
mvn olmadan son maven eser indirmek için bir astar:
curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"
Resmi belgelerden kullanım:
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get
Benim durumum için aşağıdaki cevaba bakınız:
mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6
#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.
Belirli aritfaktı indirmek için "mvn bağımlılık: get" komutunu kullanın ve indirilen eseri dest dizinine kopyalamak için "mvn bağımlılık: kopyala" komutunu kullanın "-DoutputDirectory"
Maven 3.6'yı kullanarak ASM-7'yi almak için bir örnek:
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
Veya kavanozu buradan indirebilirsiniz: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm ve sonra
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar
Komuta:
mvn install:install-file
Genellikle eseri yerel deponuza yükler , bu yüzden indirmenize gerek yoktur. Ancak, eserinizi başkalarıyla paylaşmak istiyorsanız, eseri merkezi bir depoya dağıtmanız gerekir . Daha fazla ayrıntı için konuşlandırma eklentisine bakın.
Ayrıca POM'nize bir bağımlılık eklemek , projenizi oluştururken ihtiyacınız olan üçüncü taraf yapay nesneleri otomatik olarak getirecektir. Yani bu, merkezi depodan yapay nesneyi indirecektir.