Paksa unduh ulang ketergantungan rilis menggunakan Maven

142

Saya sedang mengerjakan proyek dengan ketergantungan X. X, pada gilirannya, bergantung pada Y.

Saya dulu secara eksplisit menyertakan Y di pom proyek saya. Namun, itu tidak digunakan dan untuk membuat semuanya lebih bersih, saya malah menambahkannya ke pom X sebagai ketergantungan. X ditandai sebagai ketergantungan rilis.

Masalahnya adalah setelah menghapus Y dari pom proyek saya dan menambahkannya ke pom X, proyek saya tidak dapat dijalankan mvn -U clean package. Saya tahu -U memperbarui snapshot tetapi tidak rilis.

Jadi, tanpa menghapus ~ / .m2 / direktori repositori bagaimana saya bisa memaksa mengunduh ulang X's pom? Juga, saya mencoba berlari dependency:purge-local-repositorydan tidak berhasil juga.

volni
sumber
Anda telah menandai pertanyaan sebagai "maven-2". Opsi -U ditambahkan di Maven 3 untuk mengatasi masalah ini. Saya sarankan untuk meningkatkan.
Mark O'Connor
Hanya dari perspektif metodologi, jika Anda mengubah Xpom, maka itu harus merupakan rilis baru, meskipun itu hanya perubahan nomor patch: 1.3-> 1.3.1. Jadi, itu akan menghilangkan masalah ini dari awal.
jpaugh
Namun, masih mungkin mengalami masalah serupa dengan snapshot, jadi ada baiknya Anda memiliki beberapa jawaban.
jpaugh

Jawaban:

174

Anda tidak dapat membuat Maven mengunduh ulang dependensi, tetapi yang dapat Anda lakukan adalah membersihkan dependensi yang salah diunduh menggunakan mvn dependency:purge-local-repository

Lihat: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

Ali Tokmen
sumber
13
Bukankah itu hal yang sama?
Svish
2
Itu tidak memerlukan akses ke sistem file yang mungkin menjadi masalah jika Anda hanya mengonfigurasi pekerjaan build (untuk sistem CI misalnya).
Oliver Drotbohm
2
Jika beberapa proyek berjalan mvn dependency:purge-local-repository clean package, mungkin satu proyek menghapus ketergantungan yang sama di repositori lokal sementara proyek lain sedang menjalankan kompilasi. Bagaimana cara menghindarinya?
vikyd
56

Saya baru saja menghapus ~ / .m2 / repositori saya dan itu memaksa pengunduhan ulang;)

Ryan Angilly
sumber
1
Ini membantu sebagai upaya terakhir, saya punya proyek di mana gerhana dan maven agak "bingung". Cukup menghapus folder .m2 membuat proyek terkompilasi dan berjalan dengan benar.
Leonardo
6
Dimungkinkan juga untuk menghapus secara selektif dependensi yang Anda tahu perlu di-refresh dari dalam repositori. Pembersihan manual, jika Anda mau.
jpaugh
44

Saya pikir perintah berikut dapat membantu Anda!


mvn -U clean install
Richard
sumber
5
lepaskan ketergantungan menggunakan Maven dalam pertanyaan. Tidak, ini mungkin lebih baik menjadi komentar.
Naman
33

Terima kasih atas jawaban Ali Tokmen. Saya berhasil menghapus paksa ketergantungan lokal tertentu dengan perintah berikut:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Dengan ini, ini menghapus utilsdari .m2 / repositori saya dan selalu mengunduh ulang utilsketergantungan JAR ketika saya menjalankan mvn clean install.

skyfish
sumber
1
Saya hanya membutuhkan cara untuk memaksa maven mengunduh ulang sebuah ketergantungan. Ini adalah satu-satunya jawaban yang benar-benar melakukannya, sedangkan jawaban lain menyarankan untuk menghapus semuanya. Terima kasih
smac89
14

Proyek klik kanan-> Maven -> Perbarui Proyek dan centang kotak centang seperti pada tangkapan layar. Ini akan memperbarui rilis juga :)

masukkan deskripsi gambar di sini

nanosoft.dll
sumber
5
Akan menyenangkan mengetahui bagaimana mereka menerapkan bagian "/ Rilis" itu.
Ulises Layera
Terima kasih untuk ini, apa yang saya butuhkan.
JamesG
12
mvn clean install -U

-U berarti pembaruan paksa ketergantungan.

Jika Anda ingin memperbarui satu dependensi tanpa clean atau -U, Anda bisa menghapusnya dari repo lokal dan kemudian membangunnya.

ArpitBora
sumber
Sekali lagi, ini hanya mengunduh ulang dependensi SNAPSHOT.
Zardoz89
6

Ketika Anda menambahkannya ke X, Anda harus menambah nomor versi X yaitu X-1.2
Kemudian X-1.2 seharusnya sudah diinstal / disebarkan dan Anda harus mengubah ketergantungan proyek Anda pada X agar bergantung pada versi baru X-1.2

Crowne
sumber
6

Jika Anda mengetahui id grup X, Anda dapat menggunakan perintah ini untuk mengunduh ulang semua Xdan dependensinya

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Itu melakukan hal yang sama seperti jawaban lain yang mengusulkan penggunaan dependency:purge-local-repository, tetapi hanya menghapus dan mengunduh ulang semua yang terkait X.

smac89
sumber
4

Jika Anda benar-benar ingin mengunduh paksa semua dependensi, Anda dapat mencoba menginisialisasi ulang seluruh repositori maven. Seperti di artikel ini sudah dijelaskan, Anda dapat menggunakan:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Bart den Haak
sumber
3

Hapus saja ~ / .m2 / repository ..... / actual_path di mana LOC yang tidak valid datang karena memaksa untuk mengunduh ulang file jar yang dihapus. Jangan hapus seluruh folder repositori, tetapi hapus folder tertentu dari mana kesalahan itu datang.

Saurabh Oza
sumber
0

Menghapus surat ~/.m2/repositorywasiat akan menyelesaikan masalah Anda. Tapi, jika Anda masih ingin mempertahankan yang lama ~/.m2/repositoryAnda bisa mengubah jalur lokal maven untuk sementara.

Jika Anda bekerja di IntelliJ, buka Pengaturan Maven dan ubah jalur Repositori Lokal ke tempat lain. Anda mungkin perlu mencentang kotak centang ganti di dekat sana.

masukkan deskripsi gambar di sini

Tharindu Sathischandra
sumber
-1

Sebagian besar jawaban yang diberikan di atas akan menyelesaikan masalah.

Tetapi jika Anda menggunakan IntelliJ dan ingin memperbaikinya secara otomatis, buka Pengaturan Maven.

Build, Execution, Deployment -> Build Tools -> Maven

masukkan deskripsi gambar di sini

Nonaktifkan Bekerja Offline

Aktifkan Selalu perbarui snapshot (Beralih saat diperlukan)

Abhishek Nandgaonkar
sumber
1
Saya akan sangat menghargai jika Anda juga dapat membagikan alasan tidak suka saat Anda melakukannya. Terima kasih.
Abhishek Nandgaonkar
1
Agaknya, karena snapshot tidak dirilis, jadi ini tidak menyelesaikan masalah.
soru
-2

Pergi ke jalur pembangunan ... hapus pustaka maven yang sudah ada u tambah ... klik tambah pustaka ... klik maven managed dependencies ... lalu klik pengaturan proyek maven ... centang kotak centang selesaikan dependensi maven..itu akan mengunduh semua ketergantungan maven

SagaramVijay
sumber
2
Ini mengasumsikan penggunaan beberapa IDE, asumsi yang tidak didukung oleh pertanyaan, dan Anda bahkan tidak menentukan IDE apa!
Phil