Dengan maven, saya kadang-kadang menemukan artefak yang berasal dari beberapa repo pihak ke-3 yang belum saya buat atau masukkan dalam repositori saya.
Saya akan mendapatkan pesan kesalahan dari klien pakar yang mengatakan bahwa artefak tidak dapat ditemukan:
Gagal menemukan org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 dalam di
http://myrepo:80/artifactory/repo
-cache dalam repositori lokal, resolusi tidak akan diulang kembali sampai interval pembaruan MyRepo telah berlalu atau pembaruan dipaksa -> [ Bantuan 1]
Sekarang, saya mengerti apa artinya ini, dan dengan mudah dapat menjalankan kembali perintah saya -U
, dan segala sesuatunya berjalan dengan baik dari sana .
Namun, saya menemukan pesan kesalahan ini sangat tidak intuitif dan saya mencoba untuk membuat rekan kerja saya sakit kepala.
Saya mencoba mencari tahu apakah ada tempat yang bisa saya modifikasi update interval
pengaturan ini .
- Apakah
update interval
yang disebutkan dalam pesan kesalahan ini adalah pengaturan sisi klien atau sisi server? - Jika dari sisi klien, bagaimana cara mengkonfigurasinya?
- Jika di sisi server, apakah ada yang tahu bagaimana / jika Nexus / Artifactory mengekspos pengaturan ini?
sumber
pom.xml
.Jawaban:
Saya biasa memecahkan masalah ini dengan menghapus direktori artifak yang gagal di-download dalam repo lokal saya. Lain kali saya menjalankan perintah pakar unduhan artefak dipicu lagi. Karena itu saya akan mengatakan itu adalah pengaturan sisi klien.
Sisi Nexus (sisi server repo), masalah ini diselesaikan dengan mengonfigurasi tugas terjadwal. Sisi klien, ini dilakukan menggunakan
-U
, seperti yang telah Anda tunjukkan.sumber
Anda dapat menghapus direktori artefak gagal yang sesuai di repositori lokal Anda. Dan Anda juga bisa menggunakan
-U
tujuan. Itu akan melakukan pekerjaan. Ini bekerja dengan pakar 3. Jadi tidak perlu downgrade ke pakar 2.sumber
~/.m2/settings.xml/<repositories>
untuk menyelesaikan masalah ini dengan opsi -USaya memiliki masalah terkait, tetapi jawaban Raghuram membantu. (Saya belum memiliki reputasi yang cukup untuk memilih jawabannya). Saya menggunakan Maven yang dibundel dengan NetBeans, dan mendapatkan hal yang sama "... di-cache di repositori lokal, resolusi tidak akan diulang kembali sampai interval pembaruan nexus telah berlalu atau pembaruan dipaksa -> kesalahan [Bantuan 1]" .
Untuk memperbaikinya saya menambahkan
<updatePolicy>always</updatePolicy>
ke file pengaturan saya (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)sumber
Apa yang pada dasarnya terjadi adalah, Menurut default updatePolicy dari maven.Maven akan mengambil stoples dari repo setiap hari. Jadi jika selama upaya 1 internet Anda tidak berfungsi maka ia tidak akan mencoba mengambil tabung ini lagi sampai 24 jam dihabiskan.
Resolusi:
Baik digunakan
di mana -U akan memaksa memperbarui repo
atau gunakan
di settings.xml Anda
sumber
Menurut referensi pengaturan :
Contoh:
sumber
Meskipun Anda dapat menyelesaikan ini dengan instalasi yang bersih (mengganti semua dependensi yang di-cache) seperti yang disarankan oleh @ Sanjeev-Gulgani dengan
mvn -U clean install
Anda juga bisa menghapus ketergantungan cache yang menyebabkan masalah
Lihat mvn docs untuk info lebih lanjut.
sumber
Kesalahan ini terkadang bisa menyesatkan. 2 hal yang mungkin ingin Anda periksa:
Apakah ada JAR aktual untuk ketergantungan pada repo? Pesan kesalahan Anda berisi URL tempat pencariannya, jadi buka di sana, lalu telusuri ke folder yang cocok dengan ketergantungan Anda. Apakah ada toples? Jika tidak, Anda perlu mengubah ketergantungan Anda. (misalnya, Anda bisa menunjuk pada ketergantungan orang tua tingkat atas, ketika Anda harus menunjuk pada sub proyek)
Jika toples ada pada repo jarak jauh, maka hapus saja salinan lokal Anda. Ini akan berada di direktori home Anda (kecuali jika Anda mengonfigurasi berbeda) di bawah .m2 / repositori (ls -a untuk ditampilkan tersembunyi jika di Linux).
sumber
Jika Anda menggunakan Eclipse kemudian pergi ke Windows -> Preferences -> Maven dan hapus centang pada kotak centang "Jangan perbarui dependensi secara otomatis dari repositori jauh".
Ini bekerja dengan Maven 3 juga.
sumber
Anda perlu menghapus semua file "_maven.repositori" dari repositori Anda.
sumber
Ini berfungsi setelah Anda menghapus ketergantungan terkait dari repositori pakar lokal Anda
sumber
Jika Anda menggunakan Nexus sebagai repo proxy, pengaturan "Not Found Cache TTL" dengan nilai default 1440 menit (atau 24 jam). Menurunkan nilai ini dapat membantu (Gudang> Konfigurasi> Pengaturan Kedaluwarsa).
Lihat dokumentasi untuk info lebih lanjut.
sumber
Bagaimana saya mendapat masalah ini,
Ketika saya berubah dari Eclipse Juno ke Luna, dan checkout proyek maven saya dari repo SVN, saya mendapat masalah yang sama saat membangun aplikasi.
Apa yang saya coba? Saya mencoba membersihkan repositori lokal dan kemudian memperbarui semua versi lagi menggunakan opsi -U. Tapi masalah saya berlanjut.
Lalu saya pergi ke Window -> Preferences -> Maven -> User Settings -> dan mengklik tombol Reindex di bawah Local Repository dan menunggu reindex terjadi.
Itu saja, masalahnya sudah teratasi.
sumber
Untuk akhirnya menjawab pertanyaan judul: Ini adalah (pengaturan sisi klien) di (proyek, profil atau pengaturan)
... tag.
Nilai-nilai yang mungkin (saat ini, maven: 3.6.0, tapi saya kira kompatibel dengan "jauh ke belakang") adalah:
Evaluasi tag ini saat ini (maven 3.6.0) dilaksanakan sebagai berikut:
..dengan:
... di mana
lastModified
(file lokal) "timestamp yang dimodifikasi" dari / masing-masing artefak yang mendasarinya.Khusus untuk
interval:x
pengaturan::
tidak seketat itu - setiap karakter "tidak kosong" dapat melakukannya (=
,, ...).
x < 0
harus menghasilkan "tidak pernah".interval:0
Saya akan menganggap interval "minutely" (0-59 dtk atau di atas ...).24 * 60
menit (~ "setiap hari")...see: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver # resolMetadata () dan RepositoryPolicy
sumber
Untuk pengguna Intellij , berikut ini berfungsi untuk saya:
Klik kanan pada paket Anda
dan
sumber
Agak dirilis .. saya mendapatkan
Kesalahan ini disebabkan oleh penggunaan yang tidak sengaja
Maven 3
sebagai gantinyaMaven 2
. Hanya mengira itu mungkin menghemat waktu seseorang, karena pencarian google awal saya membawa saya ke halaman ini.sumber
Maven memiliki pengaturan updatePolicy untuk menentukan frekuensi untuk memeriksa pembaruan di repositori atau untuk menjaga repositori tetap sinkron dengan remote.
Contoh kode di bawah ini dapat ditambahkan ke file pengaturan pengguna pakar untuk mengonfigurasi updatePolicy.
sumber
If client-side, how do I configure it?
. Jawaban ini bukan tentang fitur IDE. Ini hanya konfigurasi penyimpanan mvn. TheupdatePolicy
adalah interval OP yang bertanya tentang.Dalam kasus saya solusinya bodoh: Saya hanya punya versi ketergantungan yang salah.
sumber
Saya memiliki masalah ini dan uraian komprehensif yang diajukan dalam hal ini membantu saya untuk memperbaikinya.
Masalah yang dinyatakan kedua adalah masalah saya. Saya menggunakan repositori pihak ketiga yang baru saja saya tambahkan itu melakukan
repository
bagian dari file pom dalam proyek saya. Saya menambahkan informasi repositori yang sama ke dalampluginrepository
untuk menyelesaikan masalah ini.sumber
Saya memiliki kesalahan serupa dengan artefak yang berbeda.
Tidak ada solusi yang dijelaskan di atas yang berfungsi untuk saya. Saya akhirnya menyelesaikan ini di IntelliJ IDEA dengan File> Valid Cache / Restart ...> Validate dan Restart .
sumber
Dalam kasus saya, saya punya banyak proyek
Ketika saya melakukan "mvn clean install" dari direktori "domainProject", saya akan mengatakan kesalahan.
Ketika saya melakukan "mvn clean install" dari direktori "projectRoot", masalahnya hilang.
sumber