Maven: Gagal membaca keterangan artefak


258

Saya berharap seseorang dapat membantu saya dengan masalah yang saya perjuangkan.

Ketika saya mencoba untuk membangun proyek saya dari terminal saya mendapatkan kesalahan ini:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

The common.test-data-utilsjar diciptakan oleh sebuah proyek terpisah dan dibagi antara ini dan proyek lain (proyek lainnya tidak membangun baik, tapi itu adalah ke masalah lain).

Saya dapat membangun com.morrislgn.merchandising.common:test-data-utilstanpa masalah, saya dapat melihat entri yang dibuatnya di .m2repositori lokal di komputer saya. Saya telah mengindeks ulang repositori saya di Eclipse juga.

POM untuk proyek saya memiliki entri ini:

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

Yang menurut saya benar - POM tidak melaporkan kesalahan apa pun saat dilihat di Eclipse.

Bisakah seseorang memberi tahu saya apa yang saya lewatkan di sini atau melakukan kesalahan?

Jawaban:


183

Kamu selalu bisa mencoba mvn -U clean install

-U memaksa cek untuk rilis yang diperbarui dan snapshot pada repositori jarak jauh.


40
@ MrPhi: Jika Anda memiliki plugin m2e, maka Anda dapat menggunakan Maven -> "Perbarui Proyek ...". Dialog berikutnya akan memiliki opsi untuk memaksa pembaruan foto dan rilis.
Aaron Digulla

1
@ AaronDigulla Kotak dialog itulah yang menyebabkan kesalahan bagi saya.
Jeroen

1
Untuk membuat ini berfungsi, Anda harus menjalankan perintah di dalam direktori root proyek Anda
Daria

Saya punya masalah yang sama juga. Ini sangat membantu, dan selain itu, jika Anda menggunakan repo mvn pribadi, pastikan untuk menambahkannya ke ~/.m2/setting.xmlbagian mirror Anda terlebih dahulu, dan kemudian setelah berjalan mvn -U clean install, pastikan untuk Reimport(klik kanan proyek, kemudian di bawah Mavenbagian bawah ada Reimporttombol ).
JACK ZHANG

1
@TomaszWaszczyk: Ya ada. 1. Windows-show view-> Terminal. 2. Tambahkan terminal lokal 3. cd PomFilePath 4. Jalankan perintah
Vishnu Dahatonde

142

Masalah ini dapat terjadi jika Anda memiliki beberapa proyek anak yang merujuk ke pom induk dan Anda belum menginstal dari direktori pom induk (dijalankan mvn installdari direktori induk). Salah satu proyek anak-anak mungkin bergantung pada proyek saudara kandung dan ketika membaca pom saudara kandung, itu akan gagal dengan kesalahan yang disebutkan dalam pertanyaan kecuali Anda telah menginstal dari direktori pom induk setidaknya sekali.

Saya baru saja mengalami masalah ini ketika memindahkan proyek ke komputer baru. Saya terbiasa menjalankan perintah dari proyek anak dan tidak menjalankan instalasi pada orangtua.


13
Selain itu, saat dijalankan mvn installpada induk Anda juga dapat menambahkan -Nuntuk operasi non-rekursif. Ini akan menyebabkan pakar melewatkan semua modul (termasuk modul yang gagal) dan hanya melakukan installtujuan untuk induknya.
Jacek Prucia

@ JacekPrucia baik untuk mengetahui bahwa artefak pom juga perlu diinstal (jika orang tua Anda adalah pom)
Adrian

@ bzuillsmith mengapa Anda harus menjalankan mvn installdi pom induk. Bukankah ini hanya digunakan sehingga ketergantungan saudara dapat diunduh? Jika Anda pergi ke direktori saudara & lari mvn installdari sana sehingga toples berada di repositori lokal Anda, bukankah ini menghasilkan hal yang persis sama?
user2158382

Sudah beberapa tahun sejak saya menggunakan pakar, tetapi - Ya, saya yakin Anda dapat menginstal dependensi saudara satu per satu. Menginstal dari induk cenderung kurang bekerja (lebih sedikit perintah untuk mengetik dan menjalankan). Mungkin ada kasus di proyek-proyek besar di mana Anda tidak ingin semua proyek anak diinstal dalam kasus mana Anda perlu menjalankannya secara individual.
bzuillsmith

Proyek saya seperti ch-multip-spring \ simple-parent \ simple-model \ pom.xml, saya melakukan mvn clean install dari folder root ch-multip-spring (bukan dari simple-parent juga), itu menyelesaikan masalah saya yang serupa ke judul posting.
IcyBrk

104

Punya masalah yang sama dengan IntelliJ IDEA dan berikut berhasil.

  • Pergi ke File
  • Pilih Settings
  • Pilih Build, Execution, Deployments
  • Pilih Build Toolsdari drop down
  • Pilih Mavendari drop down
  • Centang Always update snapshotskotak centang

tangkapan layar IntelliJ 2017.2> Preferensi / Pengaturan> Bangun, Eksekusi, Penempatan> Bangun Alat> Maven> Selalu perbarui foto (kotak centang)


1
Ini bekerja untuk saya, tetapi saya tidak mengerti mengapa - saya berusaha membangun dari baris perintah. Apakah ada sesuatu yang di-cache dari IntelliJ?
goodOldFashioned

Bekerja untuk saya juga! Tidak percaya betapa frustrasinya ini. Terima kasih!
Ben Arena

@ goodOldFashioned: Ini "selalu perbarui" menimpa .... file yang terakhir diperbarui dari repositori lokal. -U melakukan hal yang sama dari commandline. Jadi intellij memperbaiki repo lokal Anda, dan kemudian commandline bekerja kembali.
Frischling

Sederhana dan efektif
Ojonugwa Jude Ochalifu

2
setelah menjelajahi seluruh internet, akhirnya ini berhasil bagi saya
khawarizmi

37

Jika Anda menggunakan Eclipse, Klik Kanan pada Proyek Anda -> Maven -> Perbarui Proyek . Ini akan membuka kotak dialog Perbarui Proyek Maven.

Di kotak dialog itu, centang kotak centang Paksa Perbarui Snapshots / Rilis & klik OK . (Silakan lihat gambar di bawah)

Perbarui Kotak Dialog Proyek Maven

Ini berhasil untuk saya!


36

Jika Anda menggunakan gerhana, klik kanan pada proyek -> properti -> Maven dan pastikan bahwa " Selesaikan dependensi dari proyek ruang kerja " tidak diklik.

Semoga ini membantu.


4
Ini bekerja untuk saya. Tapi saya tidak mengerti mengapa? Ada penjelasan di balik ini?
Anand

1
ini tidak bekerja untuk saya, awalnya 12 kepergian hilang, setelah melakukan ini sekarang 74
user2044822

27

Saya tahu saya agak terlambat ke percakapan, tapi saya punya masalah ini juga. Saya pikir masalahnya adalah firewall perusahaan saya. Solusi saya adalah mencabut kabel dari jaringan, terhubung ke nirkabel terbuka kami dan kemudian memaksa pembaruan melalui Eclipse. Ini menyelesaikan segalanya.



1
Terima kasih kawan! Itu bekerja untuk saya dan menghemat banyak waktu.
saidfagan

14

Saya memiliki masalah yang sama dengan gerhana di mana baris perintah pakar bekerja dengan baik TAPI coba ini

  • masuk ke .m2 / repositori dan hapus direktori yang terkait
  • menjalankan pembaruan maven dependensi di gerhana

Kesalahan hilang .... mengapa baris perintah mvn saya bekerja dengan direktori dan gerhana .m2eclipse tidak bisa, saya tidak tahu dan agak menyebalkan. Proyek saya sekarang bekerja di gerhana lagi.


sebagai tambahan, kami beralih ke gradle .... jauh lebih bahagia daripada semut dan pakar .... pengaturan yang sangat bagus.
Dean Hiller

Bahkan tidak yakin itu berhubungan dengan Eclipse. Saya memiliki masalah yang sama dengan IntelliJ dan menghapus paket bermasalah dan menjalankan kembali mvn clean installbekerja
Jay

12

Saya memiliki masalah yang sama menggunakan IntelliJ. Saya menyelesaikannya dengan klik kanan pada pom.xml> Maven> Reimport


Ya, seperti hidup sesederhana itu. Pokoknya, jawaban @prime berhasil untuk saya.
Imam Bux

10

Saya memecahkan masalah ini dengan menghapus di folder repositori di mana kesalahan ini ditampilkan semuanya kecuali file .jar dan .pom.


Saya juga telah memecahkan masalah yang sama dengan menghapus file terkait di repositori lokal pakar dan kemudian memperbarui seluruh proyek.
Ad Infinitum

8

Masalah "Gagal membaca artefak deskriptor" umumnya menunjukkan masalah dengan file pom dependensi dalam repositori maven. Saya akan menyarankan Anda untuk memeriksa ulang apakah nama file pom sama dengan nama pakar, dan juga untuk memeriksa apakah isi file pom valid.


1
Pemeriksaan pom.xml bermanfaat. Saya menemukan saya memiliki ketergantungan yang sama dua kali (kesalahan salin & tempel). Setelah pembersihan semuanya baik-baik saja.
Adam Boczek

8

Bagi saya, itu terkait dengan pengaturan "Pengaturan Pengguna.xml" di dalamnya

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

6

Saya punya proyek

 A/
 |--a1
 |--a2

Sekarang ada proyek lain di org kami

 B/
 |--b1
 |--b2
 |--b3

(Setiap modul a1, b1 dll. Dan proyek Induk A, B memiliki pom.xml sendiri sesuai aturan standar pakar orangtua dan anak)

Kedua proyek diperiksa pada gerhana lokal saya (dari SVN). Saya aktif mengerjakan A.

Saya jadi tahu bahwa ada fungsionalitas umum yang baik (b4) yang dikembangkan dalam B dan saya harus menggunakannya.

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

Pengembang b4 telah menggunakan modul b4 ini sebagai artefak dalam repositori org kami. Saya menyertakan ketergantungan pada POM modul saya, yaitu pom.xml a2. Eclipse mengunduh artefak yang diperlukan dari repo dan saya dapat mengimpor kelas-kelas di dalamnya.

Sekarang masalah dimulai ... Saya perlu memeriksa kode sumber b4 untuk beberapa tujuan dan karena saya sudah memiliki B memeriksa gerhana lokal saya, saya memperbaruinya dari SVN dan memeriksa modul b4. Saya juga menjalankan pom.xml dari modul b4 dengan target seperti clean, package dll. Setelah beberapa saat ketika saya selesai melakukan coding, saya perlu membuat JAR dari modul saya a2. Saya menjalankan "package" pada pom.xml a2 dan BAM !! kesalahan dan kesalahan untuk modul a2 .. Kesalahan ini juga tidak terlalu ramah pengguna. Hanya ada nama b4 di log.

Solusi: Setelah mencoba banyak solusi selama berjam-jam, saya menjalankan "mvn -U clean install" dari konsol di directoty proyek B saya (yaitu di ../codebase/B). Karena B adalah induknya, perintah install clean dijalankan untuk semua modul termasuk b4 dan berhasil dijalankan. Setelah ini saya menjalankan "mvn -U clean install" untuk proyek induk saya yaitu A. Dan ini berhasil! Modul a2 dikompilasi, diinstal, (dikemas kemudian) dengan sukses.

Poin penting di sini adalah jika b4 ada di ruang kerja Anda jangan hanya menginstal b4. Anda akan perlu menginstal-lengkap B. Saya datang ke solusi ini setelah membaca jawaban dari Zuill

EDIT: Satu hal lagi di sini untuk dicatat bahwa jika saya tidak memeriksa proyek B di lingkungan lokal maka masalah ini mungkin tidak terjadi pada saya. Saya cenderung berpikir bahwa ini terjadi karena saya telah memeriksa B di ruang kerja lokal saya.


5

Anda menyebutkan dua groupIds berbeda, com.morrislgn.merchandising.commondan com.johnlewis.jec.webpim.common. Mungkin ini masalahnya.


Tempat yang bagus - tidak, itu tidak sayangnya. Saya menyalin tag yang salah dari POM XML, itu yang ada di atas tag yang saya butuhkan dan tidak melihat apa yang telah saya lakukan. Ups! Saya telah mengedit pertanyaan untuk memperbaiki kebodohan saya!
Morrislgn


4

Tidak beruntung memperbarui melalui gerhana. Harus menggunakan mvn clean install -U (yang menyelesaikan semuanya).


10
Gal Bracha juga menjawab ini. Lebih baik memilih jawaban yang berfungsi dan menambahkan komentar jika diperlukan.
Brian White

4

Bagi saya, sepertinya memang ada masalah dengan ketergantungan POM.

Saya mengatasinya dengan menggunakan repositori jitpack virtual, yang dengannya Anda dapat menyertakan repositori github berdasarkan URL mereka alih-alih POM mereka sendiri (yang tampaknya salah dalam kasus saya).

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

3

Saya memiliki masalah yang sama untuk sementara waktu dan meskipun melakukan mvn -U clean installmasalah itu tidak terselesaikan!

Saya akhirnya memecahkan masalah dengan menghapus seluruh .m2folder dan kemudian me-restart IDE saya dan masalahnya hilang!

Jadi kadang-kadang masalah akan muncul karena beberapa ketidakcocokan atau masalah dalam repositori pakar lokal Anda.


Sudah mencoba melakukan sinkronisasi ulang Maven saat offline, dan menyemprot IntelliJ sepenuhnya. Ikuti saran Anda, hapus .m2, dan sekarang itu berfungsi seperti pesona! Terima kasih!
Victor Grazi

3

Dalam kasus kami kesalahan muncul karena penggantian nama groupId salah sementara beberapa proyek dalam referensi konfigurasi multi-modul Maven kepada orang lain.

Kami memiliki proyek agregator ( billing-parent) dengan dua modul ( billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

Proyek billingtergantung pada billing-api. Jadi di pom.xmldalamnya ada:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Kami memutuskan untuk mengganti nama groupId dari com.company.teammenjadi com.company.team.billing. Kami mengganti nilai lama di induk pom.xmldan di <parent>bagian kedua modul. Tetapi lupa untuk memperbarui ketergantungan di atas. Jadi kami sudah mendapat konfigurasi di mana billingproyek referensi billing-apiartefak tua . Akhirnya ia membangun billingmodul setelah beberapa waktu dengan kesalahan seperti

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

terlepas dari kenyataan bahwa billing-apimodul dibangun tanpa kesalahan.

Solusi 1: ganti nama groupIddi dependencyjuga.

Solusi 2: ganti groupIddengan ${project.groupId}properti seperti ini:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

Kesimpulan. Jadi saran saya jika Anda mengalami kesalahan dalam konfigurasi multi-modul akan: memeriksa groupIddan artifactIdketergantungan pada modul tetangga.


2

Navigasikan melalui shell di dalam folder proyek Anda dan jalankan perintah berikut:

mvn -U clean install

Biasanya ini seharusnya sudah menyelesaikan masalah Anda.

Jika Anda melihat pesan seperti ini:

Tidak dapat menyelesaikan dependensi untuk proyek: war: 0.0.1-SNAPSHOT: Gagal mengumpulkan dependensi di com.sun.jersey: jersey-server: jar: 1.9

Kemudian jalankan:

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

diikuti oleh:

mvn -U clean install

lagi untuk akhirnya memperbarui dependensi Anda.

Setelah itu lakukan build maven bersih:

maven clean install

1

Saya punya masalah serupa. Dalam kasus saya, versi testng di folder .m2 / repositori saya rusak, tetapi ketika saya menghapusnya & melakukan pembaruan pakar lagi, semuanya bekerja dengan baik.


0

Saya memiliki masalah ini dalam gerhana, mvn -U clean installtidak berfungsi tetapi mengklik kanan proyek dan memilih Maven-> Perbarui Proyek memperbaikinya.


0

Saya baru mulai menggunakan STS Eclipse dengan pertama kali menggunakan Maven. Proyek yang saya setup sudah memiliki settings.xml sendiri. Jika ini masalahnya, Anda ingin memperbarui file settings.xml Anda dalam menjalankan konfigurasi.

  1. klik kanan pom.xml dan "Run As" -> "Run Configurations ..."

  2. di mana dikatakan "Pengaturan pengguna" klik pada tombol File dan tambahkan settings.xml.

  3. Saya pikir ini khusus untuk proyek Anda tetapi "Tujuan" saya diatur ke "instalasi bersih" dan saya memeriksa "Lewati Tes."


0

Kesalahan ini pada dasarnya mengatakan bahwa maven tidak bisa membaca dependensi tertentu dari repositori lokal. Ini mungkin terjadi karena file jar tidak diunduh dengan benar. Jadi, buka repositori lokal pakar Anda dan pastikan tidak ada file ekstensi .lastUpdated .


0

Ini membantu saya:

Dari IDE (Red Hat CodeReady Studio dalam kasus saya).

Windows -> Tampilkan Tampilan -> Terminal -> Buka / Tambahkan terminal lokal

Jalankan perintah sebagai berikut>

$ cd /pom-file-path/

$ mvn -U clean install


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.