Bagaimana cara menghapus file jar dari repositori maven lokal yang telah ditambahkan dengan install: install-file?


122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

Saya menggunakan perintah di atas untuk menginstal jar lokal ke repo lokal maven. Sekarang saya sudah mendapatkan ketergantungan dari maven repo. Saya ingin menghapus ini dari repo lokal. Bagaimana cara membersihkannya?


Jawaban:


107

Meskipun ada perintah maven yang dapat Anda jalankan untuk melakukan ini, lebih mudah untuk menghapus file secara manual dari repositori.

Seperti ini di windows Documents and Settings\your username\.m2atau $HOME/.m2di Linux


10
Saya hanya akan menghapus file .m2/repository directory. Seorang rekan kerja telah menghapus direktori .m2 sebelumnya dan ini menyebabkan masalah karena pada proyek kami, kami harus mengubah settings.xmlfile.
Tiris

7
Perhatikan bahwa dengan menghapus .m2/repositorydirektori, Anda juga akan menghapus semua file plugin maven. Sedangkan dengan menggunakan purge-local-repositoryperintah Anda hanya menghapus dependensi.
collinhaines

3
Struktur direktori di bawah .m2/repositorydiatur oleh ID grup Maven, jadi Anda cukup menghapus subdirektori yang sesuai dengan artefak yang ingin Anda hapus.
Kevin Krumwiede

124

Meskipun menghapus file secara manual berfungsi, ada cara resmi untuk menghapus dependensi proyek Anda dari repositori (cache) lokal Anda dan secara opsional menyelesaikannya kembali dari repositori jarak jauh.

Tujuannya purge-local-repository, pada plugin dependensi Maven standar, akan menghapus dependensi yang diinstal secara lokal dari proyek ini dari cache Anda. Secara opsional, Anda dapat menyelesaikannya kembali dari repositori jarak jauh pada saat yang sama.

Ini harus digunakan sebagai bagian dari fase proyek karena ini berlaku untuk dependensi untuk proyek yang memuat. Dependensi transitif juga akan dihapus (secara lokal), secara default.

Jika Anda ingin secara eksplisit menghapus satu artefak dari cache, gunakan purge-local-repositorydengan manualIncludeparameter. Misalnya, dari baris perintah:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

Dokumentasi menyiratkan bahwa ini tidak menghapus dependensi transitif secara default. Jika Anda menjalankan dengan lokasi cache non-standar, atau pada beberapa platform, ini lebih dapat diandalkan daripada menghapus file "dengan tangan".

Dokumentasi lengkap ada di spesifikasi maven-dependency-plugin .

Catatan : Versi lama dari dependencyplugin maven memiliki manual-purge-local-repositorytujuan, yang sekarang (versi 2.8) tersirat oleh penggunaan manualInclude. Dokumentasi untuk manualIncludes(dengan s) harus dibaca juga.


Saya tidak percaya bahwa ini berfungsi untuk .jars yang tidak diunduh dari maven central atau beberapa repositori lain. Ketika saya menjalankan perintah ini, ia menghilangkan semua .jars yang diunduh secara otomatis, tetapi ketika sampai ke .jars yang saya instal secara manual, ia mengeluarkan pesan kesalahan ini: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
stiemannkj1

3
Sebenarnya, setelah saya memeriksanya, saya menyadari bahwa itu menghapus .jar, tetapi masih menghasilkan kesalahan. Jadi untuk .jars yang telah diinstal secara manual, saya akan merekomendasikan menghapus secara manual daripada menggunakan metode ini, karena maven membuat beberapa file aneh seperti yourjar.jar.lastUpdateddan yourjar.pom.lastUpdatedyang mungkin perlu Anda hapus secara manual. Tetapi jika maven mengatur semua dependensi secara otomatis, ini adalah cara terbaik untuk menghapus dependensi.
stiemannkj1

Pendekatan ini juga membutuhkan proyek maven untuk menjalankan perintah. Ini tampaknya tidak berfungsi jika Anda menjalankan perintah install yang ditentukan OP dalam konteks, katakanlah build Gradle.
jdonmoyer

19

Setidaknya pada versi maven saat ini Anda perlu menambahkan switch -DreResolve = false jika Anda ingin menghapus dependensi dari repo lokal Anda tanpa mengunduhnya kembali.

mvn dependency:purge-local-repository -DreResolve=false

menghapus ketergantungan tanpa mengunduhnya lagi.



12

Hapus semua hal (jar, pom.xml, dll) di bawah ~/.m2/repository/phonegap/1.1.0/direktori lokal Anda jika Anda menggunakan OS linux.


Saat saya menghapus stoples dengan cara itu, ia "mendownload ulang" jar dari folder lama. Mungkin ada referensi yang perlu dihilangkan juga.
Antonio Sesto

0

Saya menghadapi masalah yang sama, mengikuti semua saran di atas, tetapi tidak ada yang berhasil. Akhirnya saya menghapus folder .m2 dan .ivy dan itu berhasil untuk saya.


-6
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

5
Jawaban ini mungkin atau mungkin tidak menyelesaikan masalah, tetapi bagaimana menambahkan beberapa penjelasan ke jawaban Anda, ini mungkin hanya membantu OP memahami apa yang Anda coba tunjukkan padanya.
Gerhard

2
Tanggapan ini tidak terkait dengan masalah: Anda menampilkan penyiapan repositori git di folder .m2 dan setel ulang sebagai repositori git.
lquitadamo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.