【问题标题】:Maven2 cannot find parent from relative pathMaven2 无法从相对路径中找到父级
【发布时间】:2011-01-24 06:42:58
【问题描述】:

我正在尝试使用 Maven2,但我的子项目找不到父项目。

目录结构如下:

--parent
  --pom.xml
--child
  --pom.xml

子 pom.xml 文件看起来像:

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>myapp</artifactId>
    <version>${app.version}</version>
    <relativePath>.../parent/pom.xml</relativePath>
</parent>

但是,当我使用 maven 时,它似乎甚至没有查看相对路径,它似乎尝试从 maven 存储库下载它。它显然不在回购中。我希望它查看相对路径。我究竟做错了什么?这是错误消息:

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/com/mycompany/app/myapp/${app.version}/myapp-
${app.version}.pom
[INFO] Unable to find resource 'com.mycompany.app:myapp:pom:${app.version}' in reposit
ory central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: null:web:jar:null

Reason: Cannot find parent: com.mycompany.app:myapp for project: null:web:jar:null for
 project null:web:jar:null

【问题讨论】:

    标签: maven-2 maven


    【解决方案1】:

    应该是:

    <parent>
        <groupId>com.mycompany.app</groupId>
        <artifactId>myapp</artifactId>
        <version>${app.version}</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    

    【讨论】:

    • 这不是问题(只是 IMO 的错字),这不起作用。
    • 这仍然有帮助,maven 在线文档 (maven.apache.org/guides/introduction/…) 实际上使用 ... 我认为这是他们网站上的错字
    【解决方案2】:

    据我所知,变量扩展在父元素中不起作用(请参阅 MNG-624 和 cmets 了解这方面的背景),您需要明确设置版本:

    <parent>
      <groupId>com.mycompany.app</groupId>
      <artifactId>myapp</artifactId>
      <version>1-SNAPSHOT</version><!-- or whatever version you use -->
      <relativePath>../parent/pom.xml</relativePath>
    </parent>
    

    顺便说一句,如果你想为你的所有模块使用相同的版本,你应该简单地在你的子项目中继承它,即不要覆盖它(实际上不需要${app.version} IMO),而不是另一个绕路。

    【讨论】:

      【解决方案3】:

      您不能使用父版本的属性 - 它必须匹配。目前,这是构建在以后可重现的必要条件。很多人都在关注这个问题https://issues.apache.org/jira/browse/MNG-624

      【讨论】:

        【解决方案4】:

        您的包装类型和/或版本 ID 可能不匹配。我遇到了与您相同的错误,但使用了包装类型并使其正常工作。试试下面的。

        以下是父 pom.xml 的片段。包装类型是“pom”。我没有任何父应用的代码,只有一个通用的 pom.xml 用于共享:

           ... 
            <groupId>com.mycompany.app</groupId>
            <artifactId>parent</artifactId>
            <version>${app.version}</version>
            <packaging>pom</packaging>
        

        孩子的 pom.xml。它是一个 webapp,所以打包类型是“war”:

        <parent>
          <groupId>com.mycompany.app</groupId>
          <artifactId>parent</artifactId>
          <version>${app.version}</version>
          <relativePath>../parent/pom.xml</relativePath>
          <packaging>war</packaging>
        </parent>
        

        【讨论】:

          【解决方案5】:

          问题很可能是您使用了.../ 而不是../

          【讨论】:

          • (我的意思是你放了“.../”,而不是“../”)
          【解决方案6】:

          我发现你需要先安装父 pom,然后后续的子 pom 才能从存储库中读取它们。

          使用:mvn -N install

          这将安装父 pom 而不运行其他子 pom。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-21
            • 2019-12-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-02
            相关资源
            最近更新 更多