‘ Parent.relativePath’指向我的 com.mycompany: MyProject 而不是 org.apache: apache-为什么?

真实的情况是 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
110329 次浏览

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

空荡荡的 <relativePath>添加到 <parent>,以便它解析来自存储库的父 pom。

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

这是相关的 医生

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

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

我认为你漏掉了问题中的 <relativePath>标签。我这么说是因为,没有它,这个错误就不会出现。话虽如此,

您必须集中精力的行是下面的警告语句。

指向 com.mycompany: MyProject 而不是 com.mycompany: Org.apache: apache

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

这是因为在 parent/pom.xmlartifactIdmodule/pom.xml<parent>标签中提到的 artifactId之间存在不匹配。为了避免警告更改 module/pom.xml中的 <parent>,如下所示。

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

我有一个边缘案件,一个肥胖的手指案件。

我爸妈有这个:

<?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’”“指向” “请验证您的项目结构”

我很久以前就收到过同样的警告。原因仅仅是发生警告的项目父文件夹中的 pom.xml

我一移除 ../pom.xml,警告就消失了。

这在上面的一些评论/回答中有所体现。通常在远程时根本不设置 <relativePath>字段。

Xml 是错误地存在的; 显然是另一个项目中错误操作的结果,或者只是我自己的错误复制目的地。