【问题标题】:'parent.relativePath' points at my com.mycompany:MyProject instead of org.apache:apache - Why?'parent.relativePath' 指向我的 com.mycompany:MyProject 而不是 org.apache:apache - 为什么?
【发布时间】:2011-08-25 14:52:26
【问题描述】:

真实的是 Solr 项目目录在 MyProject 父目录中(但两者之间没有模块或任何 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

【问题讨论】:

    标签: maven


    【解决方案1】:

    添加一个 empty &lt;relativePath&gt;&lt;parent&gt; 以便它从存储库中解析父 pom。

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

    这里是相关的doc

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

    【讨论】:

    • 信不信由你,警告确实会吓到一些人。我的老板刚刚让我调查为什么我们会收到此警告,而这篇文章让我很开心。
    • 警告不会从天而降。这是有原因的。在不知道为什么不是解决方案的情况下添加一个空的 ......
    • 我正在尝试构建 apache-spark。此解决方案不适用于我的情况。
    • 如果你不修复警告,你就会训练人们忽略警告。
    • 恕我直言&lt;relativePath /&gt; 看起来更好
    【解决方案2】:

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

    【讨论】:

    • 我怀疑这种默认行为会导致一些其他问题。 “输入元素”是什么意思?
    • 我的意思是你应该根据你的父 pom 相对于当前 pom 的位置为 元素编写正确的值。
    • org.apache:apache 的路径可能根本不在计算机本地(本地 .m2 存储库中除外)。在这种情况下,应指定 empty relativePath。
    【解决方案3】:

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

    【讨论】:

    • 正确,但您的回答没有解释解决方案。 org.apache:apache 的路径可能根本不在计算机本地(本地 .m2 存储库中除外)。在这种情况下,应指定 empty relativePath。
    • 这就是我的原因。这个警告一天开始出现,没有明显的原因(相同的 Maven 版本,相同的项目代码)。终于注意到项目文件夹外有一个“pom.xml”文件,该文件正在被 maven 拾取。
    【解决方案4】:

    我有一个边缘案例。就我而言,这是一个胖手指盒。

    我的 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>
    

    和我的(孩子)pom

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

    【讨论】:

      【解决方案5】:

      我认为您错过了问题中的&lt;relativePath&gt; 标签。我这么说是因为,没有它就不会出现这个错误。话虽如此,

      你必须集中注意力的是下面的警告声明。

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

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

      这是因为您的parent/pom.xmlartifactId 与您在module/pom.xml&lt;parent&gt; 标签中提到的artifactId 不匹配。为避免出现警告,请更改 module/pom.xml 中的 &lt;parent&gt;,如下所示。

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

      【讨论】:

      • org.apache:apache 的路径可能根本不在计算机本地(本地 .m2 存储库中除外)。在这种情况下,应指定 empty relativePath。
      【解决方案6】:

      我很长一段时间都收到同样的警告。原因只是出现警告的项目的父文件夹中的pom.xml

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

      在上述某些 cmets/answers 中已经表明了这一点。通常情况下,当&lt;relativePath&gt; 处于远程状态时,您根本不会设置它。

      pom.xml 是错误的;显然是另一个项目中的错误操作的结果,或者只是我自己错误的复制目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多