Tambahkan ketergantungan di Maven

134

Bagaimana cara mengambil file jar yang saya miliki dan menambahkannya ke sistem ketergantungan di maven 2? Saya akan menjadi pemelihara ketergantungan ini dan kode saya membutuhkan jar ini di jalur kelas agar dapat dikompilasi.

Milhous
sumber

Jawaban:

139

Anda harus melakukan ini dalam dua langkah:

1. Berikan JAR Anda groupId, artifactId dan versinya dan tambahkan ke repositori Anda.

Jika Anda tidak memiliki repositori internal, dan Anda hanya mencoba menambahkan JAR ke repositori lokal, Anda dapat menginstalnya sebagai berikut, menggunakan sembarang groupId / artifactIds:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Anda juga dapat menerapkannya ke penyimpanan internal Anda jika Anda memilikinya, dan ingin membuatnya tersedia untuk pengembang lain di organisasi Anda. Saya hanya menggunakan antarmuka berbasis web repositori saya untuk menambahkan artefak, tetapi Anda harus dapat mencapai hal yang sama menggunakan mvn deploy:deploy-file ....

2. Perbarui proyek yang bergantung dengan referensi JAR ini.

Kemudian perbarui ketergantungan di pom.xml proyek yang menggunakan JAR dengan menambahkan yang berikut ini ke elemen:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>
Jack Leow
sumber
3
Bisakah Anda menambahkan lebih banyak detail tentang penerapan? Kami memiliki repositori internal, dan saya ingin menerapkan file yang diinstal jar lokal saya ke repositori itu sehingga pengembang lain dan server build kami juga akan mendapatkan jar.
Kieveli
Jawaban ini harus mendapatkan semua suka! Saya telah menggunakan ini agar berhasil menambahkan dependensi untuk proyek maven saya di Google App Engine dan Heroku.
Leo C Han
93

Anda juga dapat menentukan dependensi yang tidak ada di repositori maven. Dapat berguna jika tidak ada repositori maven pusat untuk tim Anda atau jika Anda memiliki server CI

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>
Frederic Morin
sumber
4
Bisakah saya bergantung pada file pom lain sebagai ganti jar?
Jayen
45

Sebenarnya, saat menyelidiki ini, saya pikir semua jawaban ini salah. Pertanyaan Anda menyesatkan karena tingkat pemahaman kami tentang maven. Dan saya katakan kami karena saya baru saja diperkenalkan maven.

Di Eclipse, ketika Anda ingin menambahkan file jar ke proyek Anda, biasanya Anda mengunduh jar secara manual dan kemudian meletakkannya di direktori lib . Dengan maven, Anda tidak melakukannya dengan cara ini. Inilah yang Anda lakukan:

  • Buka mvnrepository
  • Cari perpustakaan yang ingin Anda tambahkan
  • Salin dependencypernyataan itu ke dalampom.xml
  • membangun kembali melalui mvn

Sekarang, mavenakan menghubungkan dan mengunduh jarbersama dengan daftar dependensi, dan secara otomatis menyelesaikan semua dependensi tambahan yang jarmungkin ada. Jadi jika jardiperlukan juga pencatatan umum, itu akan diunduh juga.

Kieveli
sumber
5
Saya menggunakan Spring Tool Suite (dibangun di atas Eclipse). Setelah langkah 1 & 2 solusi di atas: 1. Buka pom.xml di editor STS, klik tab "Dependencies" di bagian bawah 2. Klik "Add" di grup Dependencies 3. Salin / tempel info dependensi tab "Maven" dari jendela browser ( groupId, artifactId, version) ke dalam field yang sesuai pada popup "Select Dependency" di STS 4. Klik OK 5. Simpan pom.xml Setelah disimpan, direktori maven saya pada hard drive dan pengaturan ketergantungan maven di STS akan diperbarui dalam beberapa detik. Anda dapat mengedit .xml secara langsung, tetapi menggunakan alat tersebut dapat membantu menghindari masalah format xml.
Chris R
2
Ini memang cara yang lebih disukai untuk melakukan sesuatu, tetapi ada situasi di mana Anda tidak dapat melakukannya (misalnya, jar berpemilik tidak ada di mvnrepository). Jika demikian, Anda memerlukan cara untuk menambahkannya "secara manual", dalam hal ini jawaban lain akan memiliki solusinya.
Thunderforge
Mungkin juga pertanyaan yang diajukan bukanlah pertanyaan pemula. Saya menempatkan ini untuk orang-orang yang ingin melakukan sesuatu tanpa ungkapan yang tepat yang berasal dari waktu yang dihabiskan untuk bekerja dengan maven. (Seperti saya pada saat itu)
Kieveli
KISS Terima kasih, saya membaca bahwa ini setara dengan C # Nuget di Java tetapi saya mencoba mencari tahu tombol apa yang harus diklik atau cmd untuk dijalankan. Tidak persis 1: 1 tetapi melakukan pekerjaan itu.
Terrance
Bagaimana cara membangun kembali proyek di maven di intelleJ?
Irfan Nasim
14

Saya akan melakukan ini:

  1. tambahkan ketergantungan sesuka Anda di pom Anda:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    

  2. menjalankannya mvn installakan mencoba mengunduh jar dan gagal. Dalam prosesnya, ini akan memberi Anda perintah lengkap untuk menginstal jar dengan pesan kesalahan. Salin perintah itu dan jalankan! mudah ya ?!

pengguna40032
sumber
3

Saya akan berasumsi bahwa Anda menanyakan cara mendorong dependensi ke "repositori terkenal", dan tidak sekadar menanyakan cara memperbarui POM Anda.

Jika ya, maka inilah yang ingin Anda baca.

Dan bagi siapa pun yang ingin menyiapkan server repositori internal, lihat di sini (setengah dari masalah menggunakan Maven 2 adalah menemukan dokumennya)

kdgregory
sumber
Saya ingin mempertahankan ketergantungan pada diri saya sendiri. Ini adalah perpustakaan internal.
Milhous