'parent.relativePath' menunjuk ke com.mycompany: MyProject alih-alih org.apache: apache - Mengapa?

135

Apa yang benar adalah bahwa direktori proyek Solr ada di dalam direktori induk MyProject (tapi tidak ada modul atau hubungan maven antara 2, hanya kenyamanan FS). Apakah saya harus meletakkannya?

$ mvn -DskipTests clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.apache.lucene:lucene-solr-grandparent:pom:3.1-SNAPSHOT
[WARNING] 'parent.relativePath' points at com.mycompany:MyProject instead of org.apache:apache, please verify your project structure @ line 23, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 

dari pom.xml:

<parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr
simpatico
sumber

Jawaban:

259

Tambahkan kosong <relativePath> ke <parent>sehingga menyelesaikan pom induk dari repositori.

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
    <relativePath></relativePath>
  </parent>

Inilah dokumen yang relevan .

Fitur ini hanya untuk meningkatkan pengembangan dalam checkout lokal dari proyek itu. Tetapkan nilai ke string kosong jika Anda ingin menonaktifkan fitur dan selalu menyelesaikan POM induk dari repositori.
Nilai default adalah: ../pom.xml.

Raghuram
sumber
15
Percaya atau tidak, peringatan memang membuat takut beberapa orang. Bos saya hanya meminta saya untuk menyelidiki mengapa kami mendapat peringatan ini dan pos ini membuat saya senang.
Pierre
16
Peringatan jangan sampai jatuh dari langit. Ada alasannya. Menambahkan <relativePath> </relativePath> kosong tanpa mengetahui mengapa bukan solusi ....
Lawrence
1
Saya mencoba membuat apache-spark. Solusi ini tidak berfungsi dalam kasus saya.
javadba
29
Jika Anda tidak memperbaiki peringatan, Anda melatih orang untuk mengabaikan peringatan.
Paul Jackson
4
IMHO <relativePath />terlihat lebih baik
Lu55
20

mengabaikan peringatan, memindahkan sumber dari induk yang tidak terkait atau memasukkan nilai yang benar ke elemen. Masalahnya disebabkan oleh nilai default untuk relativePath yaitu ../pom.xml dan nilai default itu akan disuntikkan dalam pom efektif Anda, memicu peringatan.

mkleint
sumber
Saya menduga perilaku default ini menyebabkan beberapa masalah lain. Apa yang Anda maksud dengan 'masukkan elemen'?
simpatico
Maksud saya, Anda harus menulis nilai yang benar untuk elemen <relativePath> berdasarkan di mana pom orang tua Anda relatif terhadap pom saat ini.
mkleint
1
Path ke org.apache:apachemungkin tidak secara lokal di komputer sama sekali (kecuali dalam repositori .m2 lokal). Dalam kasus tersebut, relatifPath kosong harus ditentukan.
Simon Forsberg
2

Pesan itu mungkin disebabkan oleh pom.xml di direktori induk relatif terhadap proyek Anda saat ini. Pom dalam direktori induk tidak cocok dengan konfigurasi project.parent dari Pom saat ini.

Leo
sumber
1
Benar, tetapi jawaban Anda tidak menjelaskan solusinya. Path ke org.apache:apachemungkin tidak secara lokal di komputer sama sekali (kecuali dalam repositori .m2 lokal). Dalam kasus tersebut, relatifPath kosong harus ditentukan.
Simon Forsberg
Inilah penyebab dalam kasus saya. Peringatan ini mulai muncul suatu hari tanpa alasan yang jelas (versi pakar yang sama, kode proyek yang sama). Akhirnya melihat file 'pom.xml' tepat di luar folder proyek, yang diambil oleh pakar.
sudeep
2

Saya punya kasus pinggiran. Kasing jari gemuk di bagian saya.

Orang tua saya memiliki ini:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mygroup </groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>pom-parent</name>

dan pom (anak) saya

<parent>
    <groupId>com.mygroup</groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom-parent/pom.xml</relativePath>
</parent>  

Id grup saya di orang tua saya memiliki ruang jari yang gemuk di bagian akhir nama. "com.mygroup" bukan "com.mygroup" yang benar.

Karena kesalahan jari gemuk ini ........ nama "groupId" tidak cocok .... dan saya mendapatkan kesalahan.

Aka, periksa kesalahan jari yang gemuk sebelum Anda melakukan terlalu banyak ekstrem untuk diselesaikan.

kesalahan yang saya dapatkan untuk pencarian di internet

"Kesalahan pembuatan proyek: 'parent.relativePath' dari POM" "menunjuk pada" "harap verifikasi struktur proyek Anda"

granadaCoder
sumber
1

Saya pikir Anda telah melewatkan <relativePath>tag di pertanyaan. Saya mengatakan itu karena, tanpa itu kesalahan ini tidak akan muncul. Yang telah dibilang,

Baris yang harus Anda konsentrasi adalah pernyataan peringatan di bawah ini.

poin 'parent.relativePath' di com.mycompany: MyProject alih-alih org.apache: apache

Itu dengan jelas mengatakan bahwa path relatif dari tag pada modul Anda menunjuk ke file pom yang memiliki artifactId berbeda dibandingkan dengan apa yang ditentukan

Ini karena ada ketidaksesuaian antara artifactIdAnda parent/pom.xmldan yang artifactIdtelah Anda sebutkan dalam <parent>tag module/pom.xml. Untuk menghindari peringatan ubahlah <parent>Anda module/pom.xmlseperti yang ditunjukkan di bawah ini.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
sumber
2
Path ke org.apache:apachemungkin tidak secara lokal di komputer sama sekali (kecuali dalam repositori .m2 lokal). Dalam kasus tersebut, relatifPath kosong harus ditentukan.
Simon Forsberg