'Parent.relativePath' chỉ vào com.mycompany của tôi: MyProject thay vì org.apache: apache - Tại sao?


135

Điều đúng là thư mục dự án Solr nằm trong thư mục mẹ MyProject (nhưng không có mô-đun hoặc bất kỳ mối quan hệ maven nào giữa 2, chỉ là sự thuận tiện của FS). Tôi có phải đặt nó ra không?

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

từ pom.xml:

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

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

Câu trả lời:


259

Thêm một khoảng trống <relativePath> để <parent>nó giải quyết pom cha từ kho lưu trữ.

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

Đây là tài liệu có liên quan .

Tính năng này chỉ để tăng cường sự phát triển trong thanh toán cục bộ của dự án đó. Đặt giá trị thành một chuỗi trống trong trường hợp bạn muốn tắt tính năng này và luôn giải quyết POM gốc từ kho lưu trữ.
Giá trị mặc định là : ../pom.xml.


15
Tin hay không, cảnh báo làm một số người sợ hãi. Ông chủ của tôi chỉ yêu cầu tôi điều tra lý do tại sao chúng tôi nhận được cảnh báo này và bài đăng này làm cho ngày của tôi.
Pierre

16
Cảnh báo không rơi ra khỏi bầu trời. Có một lý do cho nó. Thêm một <RelPath> </ RelPath> trống mà không biết tại sao không phải là một giải pháp ....
Lawrence

1
Tôi đang cố gắng xây dựng apache-spark. Giải pháp này không hoạt động trong trường hợp của tôi.
javadba

29
Nếu bạn không sửa các cảnh báo, bạn sẽ huấn luyện mọi người bỏ qua các cảnh báo.
Paul Jackson

4
IMHO có <relativePath />vẻ tốt hơn
Lu55

20

hoặc bỏ qua cảnh báo, di chuyển các nguồn ra khỏi cha mẹ không liên quan hoặc nhập giá trị chính xác của phần tử. Vấn đề được gây ra bởi giá trị mặc định cho RelPath là ../pom.xml và giá trị mặc định đó được đưa vào pom hiệu quả của bạn, kích hoạt cảnh báo.


Tôi nghi ngờ hành vi mặc định này đang gây ra một số vấn đề khác. Bạn có ý nghĩa gì khi 'nhập phần tử'?
simpatico

Ý tôi là bạn nên viết giá trị chính xác cho phần tử <RelPath> dựa trên vị trí pom cha của bạn có liên quan đến pom hiện tại.
mkleint

1
Đường dẫn đến org.apache:apachecó lẽ không phải cục bộ trên máy tính (ngoại trừ trong kho .m2 cục bộ). Trong những trường hợp như vậy, một tương đối trống nên được chỉ định.
Simon Forsberg

2

Thông báo đó có thể được gây ra bởi một pom.xml trong thư mục mẹ so với dự án hiện tại của bạn. Pom trong thư mục cha không khớp với cấu hình project.parent của pom hiện tại.


1
Đúng, nhưng câu trả lời của bạn không giải thích được giải pháp. Đường dẫn đến org.apache:apachecó lẽ không phải cục bộ trên máy tính (ngoại trừ trong kho .m2 cục bộ). Trong những trường hợp như vậy, một tương đối trống nên được chỉ định.
Simon Forsberg

Đây là nguyên nhân trong trường hợp của tôi. Cảnh báo này bắt đầu xuất hiện một ngày mà không có lý do rõ ràng (cùng phiên bản maven, cùng mã dự án). Cuối cùng cũng nhận thấy tệp 'pom.xml' ngay bên ngoài thư mục của dự án đang được maven chọn.
sudeep

2

Tôi có một trường hợp rìa. Một trường hợp ngón tay béo về phía tôi.

Cha mẹ tôi đã có điều này:

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

và pom (con) của tôi

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

Id nhóm của tôi trong cha mẹ tôi có một khoảng trống ngón tay ở cuối tên. "com.mygroup" thay vì "com.mygroup" chính xác.

Vì lỗi ngón tay mập này ........ tên "groupId" không khớp .... và tôi đã gặp lỗi.

Aka, kiểm tra lỗi ngón tay béo trước khi bạn đi đến quá nhiều thái cực để giải quyết.

lỗi tôi gặp phải khi tìm kiếm trên internet

"Lỗi xây dựng dự án: 'Parent.relativePath' của POM" "chỉ vào" "vui lòng xác minh cấu trúc dự án của bạn"


1

Tôi nghĩ rằng bạn đã bỏ lỡ các <relativePath>thẻ trong câu hỏi. Tôi đang nói rằng bởi vì, không có nó Lỗi này sẽ không phát sinh. Điều đó đang được nói,

Dòng bạn sẽ phải tập trung là tuyên bố cảnh báo dưới đây.

'Parent.relativePath' chỉ vào com.mycompany: MyProject thay vì org.apache: apache

Nó nói rõ rằng đường dẫn tương đối của thẻ trên mô-đun của bạn trỏ đến tệp pom có ​​artifactId khác so với những gì được chỉ định

Điều này là do có sự không phù hợp giữa artifactIdbạn parent/pom.xmlartifactIdbạn đã đề cập trong <parent>thẻ của module/pom.xml. Để tránh cảnh báo thay đổi <parent>trong của bạn module/pom.xmlnhư hiển thị dưới đây.

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

2
Đường dẫn đến org.apache:apachecó lẽ không phải cục bộ trên máy tính (ngoại trừ trong kho .m2 cục bộ). Trong những trường hợp như vậy, một tương đối trống nên được chỉ định.
Simon Forsberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.