Maven: Artefakt tanımlayıcı okunamadı


258

Birinin mücadele ettiğim bir problemde bana yardımcı olabileceğini umuyorum.

Projemi terminalden oluşturmaya çalıştığımda bu hatayı alıyorum:

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

common.test-data-utilsKavanoz ayrı proje tarafından oluşturulan ve bu ve başka proje arasında paylaşılır (diğer proje ya inşa etmez, ama bu başka soruna aşağı).

Sorunsuz bir şekilde inşa edebiliyorum , makinemdeki yerel depoda com.morrislgn.merchandising.common:test-data-utilsyaptığı girişi görebiliyorum .m2. Eclipse'deki depomu da yeniden endeksledim.

Projem için POM şu girişe sahiptir:

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

Bu benim için doğru gibi görünüyor - POM Eclipse'de görüntülendiğinde herhangi bir hata bildirmiyor.

Bazıları burada neyi kaçırdığımı veya yanlış yaptığımı söyleyebilir mi?

Yanıtlar:


183

Her zaman deneyebilirsin mvn -U clean install

-U uzak depolardaki güncellenmiş sürümleri ve anlık görüntüleri kontrol etmeye zorlar.


40
@MrPhi: m2e eklentisine sahipseniz Maven -> "Projeyi Güncelle ..." seçeneğini kullanabilirsiniz. Bir sonraki iletişim kutusunda anlık görüntülerin ve sürümlerin güncellenmesini zorlama seçeneği bulunur.
Aaron Digulla

1
@AaronDigulla Benim için hataya neden olan iletişim kutusu.
Jeroen

1
Bu işleri yapmak için projenizin kök dizininde olmak komutunu çalıştırmalısınız
Daria

Ben de benzer bir sorun yaşadım. Bu gerçekten yardımcı olur ve ek olarak, özel mvn repo kullanıyorsanız, bunu önce ~/.m2/setting.xmlayna bölümünüze eklediğinizden emin olun ve ardından çalıştırdıktan sonra mvn -U clean install, Reimport(projeyi sağ tıklayın, ardından alt Mavenbölümün altında bir Reimportdüğme var. ).
JACK ZHANG

1
@TomaszWaszczyk: Evet var. 1. Windows gösterisi görünümü-> Terminal. 2. Yerel terminal 3'ü ekleyin. Cd PomFilePath 4. Komutu çalıştırın
Vishnu Dahatonde

143

Bu sorun, üst pom'a başvuran bazı alt projeleriniz varsa ve üst pom dizininden (üst dizinden çalıştırılır) yüklemediyseniz oluşabilir mvn install. Alt projelerden biri bir kardeş projesine bağlı olabilir ve kardeşin pomını okumaya gittiğinde, en az bir kez üst pom dizininden yüklemediyseniz, bu soruda belirtilen hatayla başarısız olur.

Bir projeyi yeni bir bilgisayara taşırken bu sorunla karşılaştım. Alt projeden komut çalıştırma alışkanlığı içindeydim ve üst öğeye yükleme çalıştırmadı.


13
Ayrıca mvn install, ebeveyn üzerinde çalışırken -Nözyinelemesiz işlem için de ekleyebilirsiniz . Bu, maven'in tüm modülleri (başarısız olan da dahil olmak üzere) atlamasına ve sadece installebeveyn için hedef yapmasına neden olur .
Jacek Prucia

@JacekPrucia, bir pom yapısının da kurulması gerektiğini bilmek güzel (ebeveyniniz bir pom ise)
Adrian

@bzuillsmith neden mvn installana pom'da koşmalısın ? Bu sadece kardeş bağımlılığının indirilebilmesi için kullanılmaz mı? Kardeş dizine gitmiş mvn installve oradan kavanoz yerel depoda olacak şekilde koştuysanız, bu aynı şeyi yapmaz mı?
user2158382

Maven kullandığımdan beri birkaç yıl geçti, ama - Evet, kardeş bağımlılıklarını tek tek kurabileceğine inanıyorum. Üst öğeden yükleme yalnızca daha az çalışma eğilimindedir (yazmak ve çalıştırmak için daha az komut). Büyük projelerde tüm alt projelerin yüklenmesini istemediğiniz durumlar olabilir, bu durumda bunları tek tek yürütmeniz gerekir.
bzuillsmith

Ch-multip-spring \ simple-parent \ simple-model \ pom.xml gibi projem, kök ch-multip-spring klasöründen mvn temiz kurulum yapıyorum (basit ebeveynlerden de değil), sorunumu benzer şekilde çözdü yazı başlığına.
IcyBrk

104

Aynı sorun IntelliJ IDEA ve takip ile çalıştı.

  • Adresine git File
  • seçmek Settings
  • seçmek Build, Execution, Deployments
  • Açılır Build Toolsmenüden seçim yapın
  • Açılır Mavenmenüden seçim yapın
  • Onay Always update snapshotskutusunu işaretleyin

IntelliJ 2017.2'nin ekran görüntüsü> Tercihler / Ayarlar> Derleme, Yürütme, Dağıtım> Derleme Araçları> Maven> Anlık görüntüleri her zaman güncelle (onay kutusu)


1
Bu benim için çalıştı, ama nedenini anlamıyorum - komut satırından inşa etmeye çalışıyordum. IntelliJ'den önbellekte saklanan bir şey var mıydı?
goodOldFashioned

Benim için de çalıştı! Bunun ne kadar sinir bozucu olduğuna inanamıyorum. Teşekkürler!
Ben Arena

@ goodOldFashioned: Bu "her zaman güncelleme", yerel depodaki .... lastUpdated dosyasının üzerine yazılır. -U komut satırından da aynısını yapar. Böylece intellij yerel deponuzu düzeltti ve ardından komut satırı tekrar çalıştı.
Frischling

Basit ve etkili
Ojonugwa Jude Ochalifu

2
tüm internete göz attıktan sonra, sonunda bu benim için çalıştı
khawarizmi

37

Eclipse kullanıyorsanız, Projenize sağ tıklayın -> Maven -> Projeyi Güncelle . Maven Projesini Güncelle iletişim kutusunu açar.

Bu iletişim kutusunda, kontrol Anlık Görüntü Kuvvet Update / Bültenleri checkbox & tıklayın Tamam . (Lütfen aşağıdaki resme bakın)

Maven Projesini Güncelle İletişim Kutusu

Bu benim için çalıştı!


36

Tutulmayı kullanıyorsanız , proje -> özellikler -> Maven'i sağ tıklayın ve "Çalışma alanı projelerinden bağımlılıkları çözme " seçeneğinin tıklanmadığından .

Bu yardımcı olur umarım.


4
Benim için çalışıyor. Ama nedenini anlamıyorum? Bunun arkasında herhangi bir açıklama var mı?
Anand

1
Bu benim için işe yaramadı, başlangıçta 12
terim

27

Sohbete oldukça geç kaldığımı biliyorum, ama bu problemi de yaşadım. Sanırım sorun şirketimin güvenlik duvarıydı. Benim çözümüm ağ bağlantısını kesmek, açık kablosuz ağımıza bağlanmak ve ardından Eclipse aracılığıyla bir güncellemeyi zorlamaktı. Bu her şeyi çözdü.



1
Teşekkürler beyler! Benim için çalıştı ve çok zaman kazandı.
dedi kifagan

14

Maven build komut satırı iyi çalıştı tutulması ile aynı sorunu vardı ama AMA bunu deneyin

  • .m2 / deposuna gidin ve ilişkili dizini silin
  • tutulmada güncelleme maven bağımlılıklarını çalıştır

Hata gider .... neden benim mvn komut satırı bu dizinler ve eclipse .m2eclipse ile çalıştı olamazdı, hiçbir fikrim yok ve biraz berbat. Projem şimdi tekrar tutulma üzerinde çalışıyor.


bir yan not, biz gradle geçiş .... karınca ve maven çok daha mutlu .... son derece güzel kurulum.
Dean Hiller

Eclipse ile ilgili bir şey olduğundan bile emin değilim. IntelliJ ile aynı sorunu yaşadım ve sorunlu paketleri silip tekrar mvn clean installçalıştım
Jay

12

IntelliJ kullanırken de aynı sorunu yaşadım. Pom.xml> Maven> Reimport'a sağ tıklayarak çözdüm


Evet, hayat bu kadar basit. Her neyse, @prime cevap benim için çalıştı.
İmam Bux

10

Bu hatayı .jar ve .pom dosyaları hariç her şeyin gösterildiği havuz klasörlerinde silerek bu sorunu çözdüm.


Aynı sorunu, maven yerel havuzundaki ilgili dosyaları silerek ve tüm projeyi güncelleyerek de çözdüm.
Ad Infinitum

8

"Artefakt tanımlayıcı okunamadı" sorunları genellikle maven deposundaki bağımlılığın pom dosyasında bir sorun olduğunu gösterir. Pom dosyasının adının maven'in beklediği adla aynı olup olmadığını iki kez kontrol etmenizi ve pom dosyasının içeriğinin geçerli olup olmadığını kontrol etmenizi öneririm.


1
Pom.xml dosyasının kontrolü faydalıydı. Aynı bağımlılığı iki kez buldum (kopyala ve yapıştır hatası). Temizlikten sonra her şey iyiydi.
Adam Boczek

8

Benim için, içindeki "Kullanıcı Ayarı.xml" ayarını yapmakla ilgiliydi

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

Bir projem var

 A/
 |--a1
 |--a2

Şimdi kuruluşumuzda başka bir proje var

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

(Her modül a1, b1 vb. Ve Ana proje A, B, ebeveyn ve çocuğun standart maven kurallarına göre kendi pom.xml'lerine sahiptir)

Her iki proje de yerel tutulma üzerinden kontrol ediliyor (SVN'den). Aktif olarak A üzerinde çalışıyorum.

B'de geliştirilen iyi bir ortak işlevsellik (b4) olduğunu öğrendim ve kullanmam gerekiyordu.

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

B4 geliştiricisi, bu b4 modülünü kuruluşumuzun deposunda bir eser olarak kullanmıştır. Modülümün POM'sine, yani a2'nin pom.xml'sine bağımlılığı dahil ettim. Eclipse, repoqired eseri repo'dan indirdi ve içindeki sınıfları içe aktarabilirim.

Şimdi sorun başlıyor ... B4'ün kaynak kodunu bir amaçla kontrol etmem gerekiyordu ve B zaten yerel tutulma üzerinde kontrol yaptırdığım için SVN'den güncelledim ve modül b4'ü kontrol ettim. Ben de temiz, paket vb hedefleri ile modül b4 pom.xml koştu Kodlama bitmiş bir süre sonra benim modül a2 bir JAR oluşturmak gerekiyordu. Ben a2's pom.xml ve BAM "paket" koştu! hatalar n a2 modülü için hatalar .. Bu hatalar da çok kullanıcı dostu değildi. Tek şey günlüklerde b4 adının kesin olmasıydı.

Çözüm: Saatlerce birçok çözüm denedikten sonra, B'nin proje müdürlüğünde (yani ../codebase/B) konsoldan "mvn -U clean install" komutunu çalıştırdım. B üst öğe olduğundan, temiz kurulum komutu b4 dahil tüm modüller için çalıştırıldı ve başarıyla çalıştırıldı. Bundan sonra benim ebeveyn projem için "mvn -U temiz kurulum" koştu. Ve bu çalıştı! a2 modülü başarıyla derlendi, kuruldu, (daha sonra paketlendi).

Burada önemli olan nokta b4'ün çalışma alanınızdaysa sadece b4'ü kurmak değil. Tüm B'yi temiz bir şekilde kurmanız gerekecek. Zuill'in cevabını okuduktan sonra bu çözüme geldim.

DÜZENLEME: Burada B projesi Yerel ortamda teslim olmasaydı, o zaman bu sorun benim için olmayabilir unutmayın. Bunun olduğunu düşünüyorum çünkü yerel çalışma alanımda B'yi kontrol ettirdim.


5

İki farklı grup kimliğinden bahsediyorsunuz com.morrislgn.merchandising.commonve com.johnlewis.jec.webpim.common. belkide sorun budur.


İyi nokta - hayır, onun talihsiz değil. POM XML'den yanlış etiketi kopyaladım, ihtiyacım olan etiketin üstünde olanı yaptım ve ne yaptığımı fark etmedim. Posta ile gönder Aptallığımı düzeltmek için soruyu düzenledim!
Morrislgn


4

Tutulma ile güncelleme şansınız olmadı. MVN temiz install -U (her şeyi çözdü) kullanmak zorunda kaldı.


10
Gal Bracha da bunu yanıtladı. Çalışan bir cevaba oy vermek ve gerekirse yorum eklemek daha iyidir.
Brian White

4

Benim için aslında bağımlılık POM ile ilgili bir sorun var gibi görünüyor.

Jitpack sanal havuzunu kullanarak çalıştım, hangi kendi POM yerine URL'lerine dayalı github depolarını dahil edebilirsiniz (ki bu benim durumumda hatalı görünüyor).

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

3

Bir süre aynı sorunu yaşadım mvn -U clean installve problemi yapmaya rağmen çözülmüyordu!

Sonunda tüm .m2klasörü silerek sorunu çözdüm ve daha sonra IDE'mi yeniden başlattım ve sorun ortadan kalktı!

Bu nedenle, bazen yerel maven deponuzdaki bazı uyumsuzluklar veya sorunlar nedeniyle sorun ortaya çıkabilir.


Çevrimdışıyken Maven yeniden senkronizasyonu yapmaya çalıştı ve tamamen IntelliJ'e ev sahipliği yaptı. Tavsiyenizi takip etti, .m2'yi sildi ve şimdi bir cazibe gibi çalışıyor! Teşekkürler!
Victor Grazi

3

Bizim durumumuzda, hata çok gruplu Maven yapılandırmasındaki bazı projeler başkalarına referans yapılırken yanlış groupId yeniden adlandırması nedeniyle ortaya çıktı.

billing-parentİki modüllü ( billing-api, billing) bir toplayıcı projemiz ( ) vardı :

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

Proje billingbağlıdır billing-api. Yani onun pom.xmlvardı:

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

Biz gelen GroupID adlandırmak karar com.company.teamiçin com.company.team.billing. Ebeveynlerde pom.xmlve <parent>her iki modülün bölümlerinde eski değeri değiştirdik . Ancak yukarıdaki bağımlılığı güncellemeyi unuttum. Bu yüzden, billingprojenin eski billing-apieseri referans aldığı bir konfigürasyonumuz vardı . Sonunda, billingbir süre sonra hata ile modülün yapısını gagalar

[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>

billing-apimodülün hatasız olarak inşa edilmesine rağmen .

Çözüm 1: Yeniden adlandırma groupIdiçinde dependencyde.

Çözüm 2: yerine groupIdgöre ${project.groupId}böyle mülkiyet:

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

Sonuç. Eğer çok modüllü yapılandırmasında hata ile karşılaştı durumda benim tavsiyem whould Yani: iyice kontrol groupIdve artifactIdkomşu modülleri bağımlılıkları.


2

Proje klasörünüzün içindeki kabuk aracılığıyla gezinin ve aşağıdaki komutu çalıştırın:

mvn -U clean install

Genellikle bu sorununuzu zaten çözmelidir.

Bunun gibi bir mesaj görürseniz:

Proje için bağımlılıklar çözülemedi: savaş: 0.0.1-SNAPSHOT: com.sun.jersey adresinde bağımlılıklar toplanamadı: jersey-server: jar: 1.9

Sonra yürütün:

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

bunu takiben:

mvn -U clean install

Sonunda bağımlılıklarınızı tekrar güncellemek için.

Daha sonra temiz maven yapısını gerçekleştirin:

maven clean install

1

Benzer bir sorun yaşadım. Benim durumumda, .m2 / depolar klasörümdeki testng sürümü bozuktu, ancak sildiğimde ve bir maven güncellemesi tekrar yaptığımda, her şey iyi çalıştı.


0

mvn -U clean installTutulmada bu sorunu yaşadım, işe yaramadı ama projeye sağ tıklayıp Maven-> Projeyi Güncelle'yi seçerek düzeltdim.


0

İlk kez Maven kullanarak STS Eclipse kullanmaya başladım. Kurduğum projenin zaten kendi settings.xml'si vardı. Bu durumda, çalıştırma yapılandırmasında settings.xml dosyanızı güncellemek istersiniz.

  1. pom.xml dosyasını sağ tıklayın ve "Farklı Çalıştır" -> "Yapılandırmaları Çalıştır ..."

  2. Burada "Kullanıcı ayarları" yazıyorsa Dosya düğmesine tıklayın ve settings.xml dosyasını ekleyin.

  3. Bunun projenize özgü olduğunu düşünüyorum, ancak "Hedeflerim" "temiz yükleme" olarak ayarlanmış ve "Testleri Atla" yı işaretledim.


0

Bu hata, temelde maven'in yerel depodan belirli bir bağımlılığı okuyamayacağını söylüyor. Bir jar dosyası doğru şekilde indirilmediği için olabilir. Bu nedenle, maven yerel deponuza gidin ve .lastUpdated uzantı dosyasının olmadığından emin olun .


0

Bu bana yardımcı oldu:

IDE'den (benim durumumda Red Hat CodeReady Studio).

Windows -> Görünümü Göster -> Terminal -> Yerel terminali Aç / Ekle

Komutları aşağıdaki gibi çalıştırın>

$ cd /pom-file-path/

$ mvn -U clean install


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.