“ parent.relativePath”指向我的com.mycompany:MyProject而不是org.apache:apache-为什么?


135

确实,Solr项目目录位于MyProject父目录内(但是2之间没有模块或任何Maven关系,只是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

Answers:


259

向其中添加一个空值 <relativePath><parent>以便从存储库解析父pom。

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

这是相关的文档

此功能仅用于增强该项目的本地结帐中的开发。如果您要禁用该功能并始终从存储库解析父POM,请将值设置为空字符串。
默认值为:../pom.xml


15
信不信由你,警告确实使某些人感到恐惧。我的老板只是问我要调查为什么我们收到此警告,而这篇帖子使我感到高兴。
Pierre

16
警告不会从天而降。这是有原因的。添加一个空的<relativePath> </ relativePath>而不知道为什么不是解决方案....
Lawrence

1
我正在尝试构建apache-spark。在我的情况下,此解决方案不起作用。
javadba

29
如果您不修正警告,则会训练人们忽略警告。
保罗·杰克逊

4
恕我直言<relativePath />看起来更好
Lu55 '18

20

要么忽略警告,将源移出不相关的父级,要么为元素输入正确的值。此问题是由relativePath的默认值../pom.xml引起的,并且该默认值已注入有效的pom中,从而触发警告。


我怀疑这种默认行为会导致其他一些问题。“输入元素”是什么意思?
simpatico

我的意思是您应该根据父pom相对于当前pom的位置为<relativePath>元素编写正确的值。
mkleint 2011年

1
到的路径org.apache:apache可能根本不在计算机本地(本地.m2存储库中除外)。在这种情况下,应指定一个空的 relativePath。
西蒙·佛斯伯格

2

该消息可能是由相对于当前项目的父目录中的pom.xml引起的。父目录中的pom与当前pom的project.parent配置不匹配。


1
正确,但是您的答案并未解释解决方案。到的路径org.apache:apache可能根本不在计算机本地(本地.m2存储库中除外)。在这种情况下,应指定一个空的 relativePath。
西蒙·佛斯伯格

这就是我的原因。该警告开始的一天没有明显原因(相同的Maven版本,相同的项目代码)。最后,在项目文件夹的外部发现了一个“ pom.xml”文件,该文件已被maven拾取。
sudeep

2

我有一个边缘盒。一个肥腻的手指套在我这方面。

我的pom父母有这个:

<?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”名称不匹配....而我得到了错误。

又说,在您走极端要解决之前,请检查手指是否发胖。

我在网上搜索时遇到的错误

“项目构建错误:POM的'parent.relativePath'”“指向”“请验证您的项目结构”


1

我认为您错过了<relativePath>问题中的标签。我说这是因为,如果没有它,将不会出现此错误。话虽如此,

您将要集中的行是以下警告声明。

'parent.relativePath'指向com.mycompany:MyProject而不是org.apache:apache

它清楚地表明模块上标签的相对路径指向一个pom文件,该文件与指定的文件相比具有不同的artifactId

这是因为artifactId您的parent/pom.xmlartifactId<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。
西蒙·佛斯伯格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.