บรรทัดคำสั่งง่ายๆในการดาวน์โหลดสิ่งประดิษฐ์ maven2 ระยะไกลไปยังที่เก็บในเครื่อง?


123

ฉันมีห้องสมุดที่ฉันแจกจ่ายโดยใช้ maven 2 ผู้ใช้ทั่วไปของห้องสมุดนี้ไม่ได้ใช้ maven ในการสร้างแอปพลิเคชันของพวกเขา แต่น่าจะค่อนข้างคุ้นเคยกับ maven และอาจติดตั้งไว้แล้ว

ฉันต้องการจัดทำเอกสารคำสั่ง "ง่ายๆ" หนึ่งบรรทัดที่สามารถใช้เพื่อดาวน์โหลด~/.m2/repositoryอาร์ติแฟกต์ของไลบรารีของฉันลงในเครื่องได้โดยไม่ต้องให้พวกเขาตั้งค่า pom.xml เพื่อทำ

ฉันคิดว่ามีวิธีทำ แต่ดูเหมือนจะหาไม่เจอหลังจากดูเอกสารประกอบinstall:install-fileและdependencyปลั๊กอินแล้ว ฉันลองทำสิ่งต่างๆเช่น:

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

แต่ฉันคิดว่าฉันกำลังเห่าต้นไม้ที่ไม่ถูกต้องเนื่องจากดูเหมือนว่าปลั๊กอินการติดตั้งจะใช้เพื่อคัดลอกไฟล์ที่สร้างขึ้นในเครื่องไปยังที่เก็บในเครื่องแทนที่จะดาวน์โหลดสิ่งประดิษฐ์ระยะไกลไปยังที่เก็บในเครื่อง

นี่คือสิ่งประดิษฐ์ที่ฉันต้องการติดตั้ง: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

เป็นไปได้โดยใช้ maven?



คำตอบ:


168

ตั้งแต่เวอร์ชัน 2.1 ของปลั๊กอินการพึ่งพา Mavenมีการพึ่งพา: รับเป้าหมายเพื่อจุดประสงค์นี้ เพื่อให้แน่ใจว่าคุณใช้ปลั๊กอินเวอร์ชันที่ถูกต้องคุณจะต้องใช้ "ชื่อเต็ม":

mvn org.apache.maven.plugins: maven-dependency-plugin: 2.1: get \
    -DrepoUrl = http: //download.java.net/maven/2/ \
    -Dartifact = โบ Guice: โบ Guice: 0.4-SNAPSHOT

มีประโยชน์มากสำหรับการแสดงวิธีการติดตั้งปลั๊กอินการอ้างอิง
Sergio Acosta

2
Pascal คุณช่วยบอกวิธีกำหนดผู้ใช้ + รหัสผ่านเพื่อเข้าถึงที่เก็บด้วยได้ไหม เคล็ดลับกับผู้ใช้: รหัสผ่าน @ repourl ใช้ไม่ได้
GáborLipták

4
เป้าหมายนั้นดี แต่ฉันจะกำหนดไดเร็กทอรีเป้าหมายที่ฉันต้องการคัดลอกไฟล์ไปได้อย่างไร (และชื่อไฟล์)
domi

9
@domi (คำตอบล่าช้าสำหรับคนรุ่นหลัง): ใช้ "-Ddest = path / to / my.jar"; มิฉะนั้นจะถูกคัดลอกไปยังที่เก็บ ~ / .m2 / ท้องถิ่นของคุณ (ทำให้ดูเหมือนไม่มีอะไรเกิดขึ้น) ดู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 (ผลลัพธ์: ant-1.8.1.jar ในไดเร็กทอรีปัจจุบัน)
michael

3
ขอบคุณ! ในขณะที่ในการเชื่อมโยงเอกสารที่คุณโพสต์มีสำหรับDeprecated. Use remoteRepositories repoUrlโปรดอัปเดตคำตอบบางที :)
วันหยุดสุดสัปดาห์

47

ให้ pom เล็กน้อยกับขวดเหล่านี้ที่ระบุไว้เป็นข้อมูลอ้างอิงและคำแนะนำในการเรียกใช้:

mvn dependency:go-offline

สิ่งนี้จะดึงการอ้างอิงไปยัง repo ในเครื่อง

ทางออกที่ตรงกว่าคือการพึ่งพา: getแต่มีข้อโต้แย้งมากมายให้พิมพ์:

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

ความคิดที่ดีแม้ว่าบรรทัดคำสั่งที่พวกเขาสามารถคัดลอกวางจะง่ายกว่า
ก็ตาม

ถ้าฉันคิดได้ฉันจะโพสต์มัน ฉันไม่รู้ว่ามีปลั๊กอินอะไรบ้างที่เรียกว่าอะไร ฉันรู้วิธีเขียน ...
bmargulies

getMojo จริงคาดว่าจะนำเสนอไม่ได้-DrepoUrl -DrepositoryUrlเกี่ยวกับอาร์กิวเมนต์ที่จะพิมพ์ไม่มีเวทมนตร์ใด ๆ คุณจำเป็นต้องให้ข้อมูลเหล่านี้ไม่ทางใดก็ทางหนึ่ง
Pascal Thivent

ในโครงร่างแรกของฉันผู้ใช้ปลายทางพิมพ์เพียงสามอักขระ: mvn การพิมพ์อื่น ๆ ทั้งหมดทำได้โดย op
bmargulies

22

ในเวอร์ชัน 2.4 ของMaven Dependency Pluginคุณยังสามารถกำหนดปลายทางเป้าหมายสำหรับอาร์ติแฟกต์ได้โดยใช้แฟล็ก -Ddest ควรชี้ไปที่ชื่อไฟล์ (ไม่ใช่ไดเร็กทอรี) สำหรับอาร์ติแฟกต์ปลายทาง ดูหน้าพารามิเตอร์สำหรับพารามิเตอร์เพิ่มเติมที่สามารถใช้ได้

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
ขอบคุณ! -Ddest ถูกทำเครื่องหมายว่าเลิกใช้แล้ว มีโซลูชันใหม่ใหม่หรือไม่?
Dimath

1
ใช้การพึ่งพา: คัดลอกเป้าหมายแทน maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
Eric B.

3
เป้าหมายการคัดลอกไม่ได้คัดลอกเดปสกรรมกริยา
Renato
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.