Berhati-hatilah karena plugin menginginkan 'repoUrl', meskipun ada dokumentasi yang mengatakan 'repositoryUrl'. Itu bisa membuatmu gila seperti yang terjadi padaku!
zakmck
docs ( maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html ) memperlihatkan kedua xml params (<repositoryUrl> ... </repositoryUrl>) dan properti-pengguna baris perintah (mvn .. . -DrepoUrl = "..."). Contoh khusus ini sudah usang, jadi jangan khawatir; sekarang repositori remote seragam (dalam kedua penggunaan); tetapi perhatikan bahwa parameter "tujuan" adalah properti pengguna "-Ddest = ..."; misalnya => 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 (hasil: ant-1.8.1.jar di direktori saat ini)
michael
Jawaban:
182
Anda dapat menggunakan plugin ketergantungan maven yang memiliki dependency:gettujuan yang bagus sejak versi 2.1. Tidak perlu pom, semuanya terjadi di baris perintah.
Untuk memastikan untuk menemukan dependency:gettujuannya, Anda harus secara eksplisit memberi tahu pakar untuk menggunakan versi 2.1, yaitu Anda harus menggunakan nama plugin yang sepenuhnya memenuhi syarat, termasuk versi:
PEMBARUAN: Dengan versi Maven yang lebih lama (sebelum 2.1), dimungkinkan untuk berjalan secara dependency:getnormal (tanpa menggunakan nama dan versi yang sepenuhnya memenuhi syarat) dengan memaksa salinan pakar untuk menggunakan versi plugin yang diberikan.
Hal ini dapat dilakukan sebagai berikut:
1. Tambahkan baris berikut dalam <settings>elemen ~/.m2/settings.xmlfile Anda :
Tapi ini tampaknya tidak berfungsi lagi dengan pakar 2.1 / 2.2. Sebenarnya, menurut Pengantar Registry Plugin , fitur-fitur plugin-registry.xmltelah dirancang ulang (untuk portabilitas) dan plugin plugin saat ini dalam keadaan semi-aktif dalam Maven 2 . Jadi saya pikir kita harus menggunakan nama panjang untuk saat ini (saat menggunakan plugin tanpa pom, yang merupakan ide di balik dependency:get).
Ya, dan saya baru saja mendapatkan resolusi yang sama menggunakan dependency: get goal. mvn dependensi: get -Dartifact = org.apache.archiva: archiva-webapp: TERBARU: war -DrepoUrl = repository.sonatype.org/content/repositories/central Satu-satunya ketidaknyamanan adalah saya harus memberikan opsi repoUrl. Informasi Anda sangat membantu, saya menggunakan mvn 2.2.1 (rdebian-1) dan saya tidak menyentuh pluginRegistry. Terima kasih.
Apa perbedaan antara mendapatkan dan menginstal? Bukankah mereka berdua mengambil repo pakar Anda? --edit: tunggu, tidak, saya mengerti sekarang; instal adalah untuk deps lokal Anda untuk disalin ke repo m2 lokal, dapatkan mengambilnya dari jarak jauh.
(Terima kasih kepada Pascal Thivent karena memberikan jawaban yang luar biasa sejak awal. Saya menambahkan jawaban lain, karena itu tidak cocok dengan komentar dan terlalu luas untuk diedit.)
Saya menggunakan ini untuk mengunduh pola dasar maven. Ini berfungsi baik jika Anda berada di belakang proxy dan bekerja dengan gerhana yang gagal mendaftar untuk mengidentifikasi arketipe maven meskipun Anda telah mengkonfigurasi proxy di pengaturan xml.
Acewin
mvn org.apache.maven.plugins: maven-dependency-plugin: 2.8: get -Dartifact = org.apache.maven.archetypes: maven-archetype-webapp: 1.0: jar
Acewin
Bisakah Anda menjelaskan apa jar:sourcesartinya / tidak? mengapa Anda perlu menentukan "toples"? dan apakah "sumber" berarti itu akan mengunduh dependensi tambahan yang diperlukan artefak?
red888
"jar" adalah jenis kemasan, "sumber" adalah penggolongnya. Diberi satu ketergantungan (misalnya, hibernate-core ), mungkin ada lebih dari satu artefak. Seringkali, ada: 1. perpustakaan binary-only, 2. sources, file JAR yang hanya berisi sumber-sumber Java, 3. javadoc, file JAR dengan API docs saja. Lihat juga: Penangan Artefak Default Maven .
Danilo Piazzalunga
Terima kasih tentang memperjelas cara menggunakan yang [:classifier]benar, jika saya memiliki plugin lengkap yang dibuat file zip yang ingin saya unduh.
jonashackt
43
Inilah yang berhasil bagi saya untuk mengunduh versi terbaru dari sebuah artefak yang disebut "component.jar" dengan Maven 3.1.1 pada akhirnya (saran lain tidak, sebagian besar karena perubahan versi maven, saya percaya)
Ini sebenarnya mengunduh file dan menyalinnya ke direktori kerja lokal
Terima kasih banyak! Saya tidak perlu acara -DrepoUrl, saya kira itu tersirat dari pom saya pula. Juga saya tidak menggunakan -Ddestseperti yang saya benar-benar melakukan keinginan untuk itu download ke biasa .m2direktori.
yair
15
The destparameter sudah ditinggalkan , dan bisa diganti dengan invokation dari copysetelah getseperti: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.(dalam hal ini menempatkan tabung di direktori kerja).
Jacob Raihle
@JacobRaihle Lalu aku tidak bisa download file tanpa pom.xml, mendapatkan error berikut: Goal requires a project to execute but there is no POM in this directory.
Athlan
2
Dukungan @Athlan No-pom mungkin merupakan fitur yang lebih baru, saya kira. Saat ini saya hanya bisa menjalankan mvn dependency:copy(tanpa yang dependency:getpertama).
Jacob Raihle
26
Mengenai cara mendapatkan biner artefak, jawaban Pascal Thivent adalah itu, tetapi untuk juga mendapatkan tabung sumber artefak, kita dapat menggunakan:
Ini berfungsi karena artifactparameter sebenarnya terdiri dari groupId:artifactId:version[:packaging][:classifier]. Hanya pengemasan dan penggolong adalah opsional.
Dengan jarsebagai pengemasan dan sourcessebagai penggolong , plugin dependensi pakar memahami bahwa kami meminta toples sumber, bukan toples artefak.
Sayangnya untuk saat ini sumber file jar tidak dapat diunduh secara transitif, yang memang masuk akal, tetapi idealnya saya percaya itu juga dapat menghargai opsi downloadSourcesseperti halnya plugin gerhana.
Seseorang dapat menggunakan dependensi: salin ( http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html ) yang mengambil daftar artefak yang ditentukan di bagian konfigurasi plugin dan menyalinnya ke lokasi yang ditentukan , mengganti nama mereka atau menghapus versi jika diinginkan. Tujuan ini dapat menyelesaikan artefak dari repositori jarak jauh jika tidak ada di repositori lokal atau reaktor.
Tidak semua properti plugin dapat digunakan di maven CLI. Properti yang memiliki properti "Properti Pengguna:" yang ditentukan dapat ditentukan. Dalam contoh di bawah ini saya mengunduh junit ke folder temp saya dan menghapus vesion dari file jar.
di mana artifact = junit: junit: 4.11 adalah koordinat pakar. Dan Anda menentukan artifcat sebagai groupId: artifactId: version [: packaging [: classifier]]
Gunakan perintah "mvn dependency: get" untuk mengunduh aritfact spesifik dan gunakan perintah "mvn dependency: copy" untuk menyalin artefak yang diunduh ke dest dir "-DoutputDirectory"
Biasanya menginstal artefak di repositori lokal Anda, jadi Anda tidak perlu mengunduhnya. Namun, jika Anda ingin membagikan artefak Anda dengan orang lain, Anda perlu menyebarkan artefak ke repositori pusat, lihat plugin deploy untuk lebih jelasnya.
Selain itu menambahkan ketergantungan pada POM Anda akan secara otomatis mengambil artefak pihak ketiga yang Anda butuhkan saat membangun proyek Anda. Yaitu Ini akan mengunduh artefak dari repositori pusat.
Jawaban:
Anda dapat menggunakan plugin ketergantungan maven yang memiliki
dependency:get
tujuan yang bagus sejak versi 2.1. Tidak perlu pom, semuanya terjadi di baris perintah.Untuk memastikan untuk menemukan
dependency:get
tujuannya, Anda harus secara eksplisit memberi tahu pakar untuk menggunakan versi 2.1, yaitu Anda harus menggunakan nama plugin yang sepenuhnya memenuhi syarat, termasuk versi:PEMBARUAN: Dengan versi Maven yang lebih lama (sebelum 2.1), dimungkinkan untuk berjalan secara
dependency:get
normal (tanpa menggunakan nama dan versi yang sepenuhnya memenuhi syarat) dengan memaksa salinan pakar untuk menggunakan versi plugin yang diberikan.Hal ini dapat dilakukan sebagai berikut:
1. Tambahkan baris berikut dalam
<settings>
elemen~/.m2/settings.xml
file Anda :2. Tambahkan file
~/.m2/plugin-registry.xml
dengan konten berikut:Tapi ini tampaknya tidak berfungsi lagi dengan pakar 2.1 / 2.2. Sebenarnya, menurut Pengantar Registry Plugin , fitur-fitur
plugin-registry.xml
telah dirancang ulang (untuk portabilitas) dan plugin plugin saat ini dalam keadaan semi-aktif dalam Maven 2 . Jadi saya pikir kita harus menggunakan nama panjang untuk saat ini (saat menggunakan plugin tanpa pom, yang merupakan ide di balikdependency:get
).sumber
:jar:sources
ke artefak , lihat stackoverflow.com/a/31109185/537554mvn dependency:get -Dartifact=group-id:artefact-id:version
Dengan versi terbaru (2.8) dari Plugin Maven Dependency , mengunduh artefak dari Maven Central Repository semudah:
di mana
groupId:artifactId:version
, dll. adalah koordinat MavenContoh, diuji dengan Maven 2.0.9, Maven 2.2.1, dan Maven 3.0.4:
(Terima kasih kepada Pascal Thivent karena memberikan jawaban yang luar biasa sejak awal. Saya menambahkan jawaban lain, karena itu tidak cocok dengan komentar dan terlalu luas untuk diedit.)
sumber
jar:sources
artinya / tidak? mengapa Anda perlu menentukan "toples"? dan apakah "sumber" berarti itu akan mengunduh dependensi tambahan yang diperlukan artefak?sources
, file JAR yang hanya berisi sumber-sumber Java, 3.javadoc
, file JAR dengan API docs saja. Lihat juga: Penangan Artefak Default Maven .[:classifier]
benar, jika saya memiliki plugin lengkap yang dibuat file zip yang ingin saya unduh.Inilah yang berhasil bagi saya untuk mengunduh versi terbaru dari sebuah artefak yang disebut "component.jar" dengan Maven 3.1.1 pada akhirnya (saran lain tidak, sebagian besar karena perubahan versi maven, saya percaya)
Ini sebenarnya mengunduh file dan menyalinnya ke direktori kerja lokal
Dari bash:
sumber
-DrepoUrl
, saya kira itu tersirat dari pom saya pula. Juga saya tidak menggunakan-Ddest
seperti yang saya benar-benar melakukan keinginan untuk itu download ke biasa.m2
direktori.dest
parameter sudah ditinggalkan , dan bisa diganti dengan invokation daricopy
setelahget
seperti:mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(dalam hal ini menempatkan tabung di direktori kerja).Goal requires a project to execute but there is no POM in this directory
.mvn dependency:copy
(tanpa yangdependency:get
pertama).Mengenai cara mendapatkan biner artefak, jawaban Pascal Thivent adalah itu, tetapi untuk juga mendapatkan tabung sumber artefak, kita dapat menggunakan:
misalnya
Ini berfungsi karena
artifact
parameter sebenarnya terdiri darigroupId:artifactId:version[:packaging][:classifier]
. Hanya pengemasan dan penggolong adalah opsional.Dengan
jar
sebagai pengemasan dansources
sebagai penggolong , plugin dependensi pakar memahami bahwa kami meminta toples sumber, bukan toples artefak.Sayangnya untuk saat ini sumber file jar tidak dapat diunduh secara transitif, yang memang masuk akal, tetapi idealnya saya percaya itu juga dapat menghargai opsi
downloadSources
seperti halnya plugin gerhana.sumber
Seseorang dapat menggunakan dependensi: salin ( http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html ) yang mengambil daftar artefak yang ditentukan di bagian konfigurasi plugin dan menyalinnya ke lokasi yang ditentukan , mengganti nama mereka atau menghapus versi jika diinginkan. Tujuan ini dapat menyelesaikan artefak dari repositori jarak jauh jika tidak ada di repositori lokal atau reaktor.
Tidak semua properti plugin dapat digunakan di maven CLI. Properti yang memiliki properti "Properti Pengguna:" yang ditentukan dapat ditentukan. Dalam contoh di bawah ini saya mengunduh junit ke folder temp saya dan menghapus vesion dari file jar.
di mana artifact = junit: junit: 4.11 adalah koordinat pakar. Dan Anda menentukan artifcat sebagai groupId: artifactId: version [: packaging [: classifier]]
(Terima kasih kepada Pascal Thivent untuk memberikan https://stackoverflow.com/a/18632876/2509415 di tempat pertama. Saya menambahkan jawaban lain)
sumber
satu liner untuk mengunduh artefak maven terbaru tanpa mvn:
sumber
Penggunaan dari dokumentasi resmi:
Untuk kasus saya, lihat jawabannya di bawah:
Gunakan perintah "mvn dependency: get" untuk mengunduh aritfact spesifik dan gunakan perintah "mvn dependency: copy" untuk menyalin artefak yang diunduh ke dest dir "-DoutputDirectory"
sumber
Berikut ini contoh untuk mendapatkan ASM-7 menggunakan Maven 3.6:
Atau Anda dapat mengunduh toples dari sini: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm lalu
sumber
Perintah:
Biasanya menginstal artefak di repositori lokal Anda, jadi Anda tidak perlu mengunduhnya. Namun, jika Anda ingin membagikan artefak Anda dengan orang lain, Anda perlu menyebarkan artefak ke repositori pusat, lihat plugin deploy untuk lebih jelasnya.
Selain itu menambahkan ketergantungan pada POM Anda akan secara otomatis mengambil artefak pihak ketiga yang Anda butuhkan saat membangun proyek Anda. Yaitu Ini akan mengunduh artefak dari repositori pusat.
sumber
LATEST
sudah usang, coba dengan rentang[,)
sumber