Maven: Çözümlenemeyen üst POM


104

Maven proje kurulumumu 1 kabuk projesi ve 4 çocuk modülü olarak aldım. Kabuğu inşa etmeye çalıştığımda. Alırım:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]

Yalnız bir modül oluşturmaya çalışırsam, aynı hatayı alıyorum, yalnızca modül1'i, modül ne olursa olsun değiştir.

Hepsinin ponponlarında ebeveyne gönderme yapmasını sağlayın.

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

İşte shell pom'un ilgili kısımları:

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

1
Herkes ilgi ise, ekleme <relativePath>..</relativePath>altında <parent></parent>benim için çalıştı.
kaptan

2
run thismvn install -N & mvn install
Se Song

Bağıl yol, uygun olmayan projeler içindir, beklenti modülün üst klasöründe bir pom olduğunda bir "çözüm" değildir.
Rick O'Shea

Benim durumumda pom.xml dosyasındaki yanlış yazımdan kaynaklanıyordu.
Oleksii Kyslytsyn

Tüm olası sorunlar özetlenmiştir: stackoverflow.com/a/62704660/6172857
Sumit Badsara

Yanıtlar:


95

Sadece referans için.

Maven'in sevinçleri.

Modüllerin göreceli yolunu ../pom.xml'ye koymak sorunu çözdü.

parentTüründe bir relativePathsen ebeveyn dizine noktasına gerektiğini elemanı. Varsayılan olarak..


17
Evet. Maven'i kullanmak ne yaptığınızı bilmenizi gerektirir, deneme yanılma sizi çok uzağa götürmez. Öte yandan, mevcut birkaç iyi referans var. Bu bir .
Nicola Musatti

6
Yani bunu <relativePath>..</relativePath>altına <parent></parent>mı ekledin ?
oktavian

Teşekkürler, sorunu çözmek için bir süre denedim. Ben gelen göreli yolunu aldı ../pom.xmletmek ../<parent folder>/pom.xml.
Mario Kurzweil

Özel bir depoyu işaret ediyorsanız, <relativePath> koymak sorunu çözmenize gerek kalmayacaktır. Ayrıntılı açıklama için Tomáš Záluský yanıtına bakın.
Gi1ber7

Ana pom dosyamı aynı dizindeki (aynı proje) başka bir dosyaya (testler için) genişletmeye çalışıyorum. Ancak bu, bu hatayı çözmez. Nasıl düzeltileceğine dair bir fikrin var mı?
Praneeth Peiris

40

Doğru settings.xmldosya ~/.m2/dizine yerleştirilerek de düzeltilebilir .


3
Tam olarak bu benim sorunumu çözdü, teşekkürler !!! Ancak onu bir dizine koyarak değil, Tercihler - Maven - Kullanıcı Ayarları'nda Eclipse'i işaret ederek.
Beyin

Benim sorunumu da çözdüm. Ayarların da doğru şekilde yapılandırıldığından emin olmalısın maven.repo..
Saran

21

Alternatif neden, ebeveyn yapısının pom.xml, genellikle özel bir depodan erişilemeyen bir depodan gelmesi olabilir . Çözüm, bu depoyu şurada sağlamaktı pom.xml:

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Benim durumumda, Eclipse nedeniyle sorun daha da karmaşıktı: depo yalnızca özel profilde ( <profiles><profile><id>activate-private-repo</id><repositories>...) etkindi ve Eclipse'deki Maven GUI bu profili Ctrl+Alt+Pkısayol aracılığıyla ayarlamaya izin vermedi .

Çözüm, depoyu geçici olarak profil dışında bildirmek (koşulsuz olarak), Alt+F5Maven Güncelleme Projesi'ni başlatmak , profili etkinleştirmek ve depo bildirimini tekrar profile yerleştirmekti. Bu daha çok Eclipse bug, Maven bug değil.


Aynı durum! Özel repo ponponlara eklenmedi.
LoranceChen

5

Sadece <relativePath />pom'daki ebeveynin şöyle görünmesi için ekleyin :

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>

2
Bu sadece ebeveyn aynı dizin yapısında, yani uzak bir depoda olmadığında geçerlidir.
Ondra Žižka

4

Çözümlenemeyen ana POM: Bu, ana depoyu çözemeyeceğiniz anlamına gelir.

Hata ayıklama modunda trun:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:

Çünkü ana depo, maven merkezinin bir parçası değil. Çözüm, ana POM ile sonuçlanmasına yardımcı olmak için ~ m2 / cinsinden bir setting.xml belirtmektir. /Users/username/.m2/settings.xml

Bu XML'de, depo bilgilerini belirtmeniz gerekebilir.


Harika! Repo bilgilerimi xml ayarlarına eklemek işe yaradı. Ama neden pom xml'den (içinde aynı repo eklenmiş) almıyor?
smilyface

2

Alt POM'larda doğru değerlere sahip olup olmadığınızı doğrulayın

GroupId
ArtefactId
Version

Örneğin Eclipse'de şunları arayabilirsiniz: Eclipse: ebeveyn pom'u ara


2

<relativePath>

Bir alt proje altında inşa ederseniz <relativePath>, ana pomu çözmenize yardımcı olabilir.

ebeveyn pomu yükle

Ancak alt projeyi kendi klasöründen oluşturursanız <relativePath>çalışmaz. Önce installana pomu yerel deponuza, ardından alt projeyi oluşturabilirsiniz.


1

1.0_A0'ı $ {project.version} ile değiştirin

Mvn'yi bir kez çalıştırın. Bu, gerekli tüm depoları indirecektir. Bu adımdan sonra 1.0_A0'a geri dönebilirsiniz.


Bu yalnızca gerekli ana POM, alt modülün POM'uyla aynı sürüme sahipse çalışır. Bu her zaman böyle değildir.
Gerold Broser

1

İşimde de benzer bir sorun yaşadım.

Bağımlılık olmadan üst projenin oluşturulması .m2 klasöründe parent_project.pom dosyası oluşturuldu.

Ardından alt modülü üst POM'a ekleyin ve Maven derlemesini çalıştırın.

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

Cevabınız, <relativePath /> ile birlikte benim için sorunu çözdü. * relativePath tek başına vermedi.
Gyro Gearloose

0

Bağımlılık ekle

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>

0

Bu sorunu çok uzun bir denemeden sonra çözdüm, uzaktaki parent_pom.xml'nin yerel ve yapıştırılan içeriklerinde alt modül dosya dizininde "parent_pom.xml" adlı başka bir dosya oluşturdum, yeni oluşturulan "parent_pom.xml ". Benim için çalıştı ve hata mesajı gitti.


0

İç göreli yol etiketi aşağıdaki işlemleri gerçekleştirir

<relative>{project_name}/pom.xml</relative>

ve ardından RunAs-> Maven inşa

Benim için çalıştı.



-2

İki reaktör derleme pom.xml dosyalarının aynı artefactId'ye sahip olduğu sorununu yaşadım.


Benim durumumda, bu üst modül ana klasörde değildi, <relativePath>
../parent-module-dir
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.