'parent.relativePath' ชี้ที่ com.mycompany ของฉัน: MyProject แทน org.apache: apache - ทำไม?


138

สิ่งที่เป็นความจริงก็คือไดเร็กทอรีโปรเจ็กต์ Solr อยู่ในไดเร็กทอรีหลักของ MyProject (แต่ไม่มีโมดูลหรือความสัมพันธ์ใด ๆ ระหว่าง 2 เพียงแค่ความสะดวกของ FS) ฉันต้องวางมันออกหรือไม่?

$ 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] 

จากpom.xml:

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

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

คำตอบ:


263

เพิ่มที่ว่างเปล่า <relativePath>ไป<parent>เพื่อที่จะแก้ไข pom ปกครองจากคลัง

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

นี่คือที่เกี่ยวข้องdoc

คุณลักษณะนี้มีไว้เพื่อปรับปรุงการพัฒนาในการชำระเงินในพื้นที่ของโครงการนั้นเท่านั้น ตั้งค่าเป็นสตริงว่างในกรณีที่คุณต้องการปิดใช้งานคุณลักษณะนี้และแก้ไข POM หลักจากที่เก็บเสมอ
ค่าดีฟอลต์คือ: ../pom.xml.


15
เชื่อหรือไม่คำเตือนทำให้บางคนตกใจ เจ้านายของฉันขอให้ฉันตรวจสอบสาเหตุที่เราได้รับคำเตือนนี้และโพสต์นี้ทำให้วันของฉัน
ปิแอร์

17
คำเตือนอย่าหลุดออกมาจากท้องฟ้า มีเหตุผลสำหรับมัน การเพิ่ม <relativePath> </relativePath> ว่างเปล่าโดยไม่รู้ว่าทำไมจึงไม่แก้ปัญหา ....
Lawrence

1
ฉันกำลังพยายามสร้าง apache-spark โซลูชันนี้ใช้ไม่ได้ในกรณีของฉัน
javadba

29
หากคุณไม่แก้ไขคำเตือนคุณจะฝึกให้คนเพิกเฉยต่อคำเตือน
Paul Jackson

4
IMHO <relativePath />ดูดีขึ้น
Lu55

20

ละเว้นคำเตือนย้ายแหล่งข้อมูลออกจากพาเรนต์ที่ไม่เกี่ยวข้องหรือป้อนค่าที่ถูกต้องขององค์ประกอบ ปัญหาเกิดจากค่าเริ่มต้นสำหรับ relativePath ซึ่งก็คือ ../pom.xml และค่าเริ่มต้นนั้นจะถูกฉีดเข้าไปใน pom ที่มีประสิทธิภาพของคุณทำให้เกิดการเตือน


ฉันสงสัยว่าพฤติกรรมเริ่มต้นนี้ทำให้เกิดปัญหาอื่น ๆ "ใส่องค์ประกอบ" หมายความว่าอย่างไร
simpatico

ฉันหมายความว่าคุณควรเขียนค่าที่ถูกต้องสำหรับองค์ประกอบ <relativePath> ตามตำแหน่งที่ปอมแม่ของคุณสัมพันธ์กับปอมปัจจุบัน
mkleint

1
เส้นทางไปยังorg.apache:apacheอาจไม่อยู่ในคอมพิวเตอร์เลย (ยกเว้นในที่เก็บ. m2 ในเครื่อง) ในกรณีเช่นนี้ควรระบุ relativePath ว่าง
Simon Forsberg

2

ข้อความนั้นอาจเกิดจาก pom.xml ในไดเร็กทอรีหลักที่สัมพันธ์กับโปรเจ็กต์ปัจจุบันของคุณ pom ในไดเร็กทอรีพาเรนต์ไม่ตรงกับ project.parent config ของ pom ปัจจุบัน


1
ถูกต้อง แต่คำตอบของคุณไม่ได้อธิบายวิธีแก้ปัญหา เส้นทางไปยังorg.apache:apacheอาจไม่อยู่ในเครื่องคอมพิวเตอร์เลย (ยกเว้นในที่เก็บ. m2 ในเครื่อง) ในกรณีเช่นนี้ควรระบุ relativePath ว่าง
Simon Forsberg

นี่เป็นสาเหตุในกรณีของฉัน คำเตือนนี้เริ่มปรากฏขึ้นในวันหนึ่งโดยไม่มีเหตุผลชัดเจน (เวอร์ชัน maven เดียวกันรหัสโครงการเดียวกัน) ในที่สุดก็สังเกตเห็นไฟล์ 'pom.xml' ที่อยู่นอกโฟลเดอร์ของโครงการซึ่งมาเวนถูกหยิบขึ้นมา
sudeep

2

ฉันมีเคสขอบ เคสนิ้วอ้วนในส่วนของฉัน

พ่อแม่ปอมของฉันมีสิ่งนี้:

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

และปอม (ลูก) ของฉัน

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

ID กลุ่มของฉันในผู้ปกครองของฉันมีช่องว่างที่นิ้วอ้วนอยู่ท้ายชื่อ "com.mygroup" แทน "com.mygroup" ที่ถูกต้อง

เนื่องจากความผิดพลาดของนิ้วอ้วน ........ ชื่อ "groupId" ไม่ตรงกัน .... และฉันได้รับข้อผิดพลาด

Aka ตรวจสอบข้อผิดพลาดของนิ้วอ้วนก่อนที่คุณจะแก้ไขมากเกินไป

ฉันพบข้อผิดพลาดจากการค้นหาทางอินเทอร์เน็ต

"ข้อผิดพลาดในการสร้างโครงการ: 'parent.relativePath' ของ POM" "ชี้ที่" "โปรดตรวจสอบโครงสร้างโครงการของคุณ"


1

ฉันคิดว่าคุณพลาด<relativePath>แท็กในคำถาม ฉันกำลังบอกว่าเพราะถ้าไม่มีมันข้อผิดพลาดนี้จะไม่เกิดขึ้น ที่ถูกกล่าวว่า

บรรทัดที่คุณจะต้องมีสมาธิคือคำเตือนด้านล่าง

'parent.relativePath' ชี้ที่ com.mycompany: MyProject แทน org.apache: apache

มันบอกอย่างชัดเจนว่าเส้นทางสัมพัทธ์ของแท็กบนโมดูลของคุณชี้ไปที่ไฟล์ pom ซึ่งมี artifactId ต่างกันเมื่อเทียบกับสิ่งที่ระบุ

นี้เป็นเพราะมีไม่ตรงกันระหว่างartifactIdคุณparent/pom.xmlและartifactIdคุณได้กล่าวถึงในแท็กของ<parent> module/pom.xmlเพื่อหลีกเลี่ยงการเปลี่ยนแปลงคำเตือน<parent>ในของคุณmodule/pom.xmlดังที่แสดงด้านล่าง

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>

2
เส้นทางไปยังorg.apache:apacheอาจไม่อยู่ในเครื่องคอมพิวเตอร์เลย (ยกเว้นในที่เก็บ. m2 ในเครื่อง) ในกรณีเช่นนี้ควรระบุ relativePath ว่าง
Simon Forsberg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.