Maven2无法从相对路径中找到父级

vag*_*ond 13 maven-2 maven

我正在尝试使用Maven2但我的子项目无法找到父项目.

目录结构如下:

--parent
  --pom.xml
--child
  --pom.xml
Run Code Online (Sandbox Code Playgroud)

子pom.xml文件如下所示:

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>myapp</artifactId>
    <version>${app.version}</version>
    <relativePath>.../parent/pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)

但是,当我使用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
Run Code Online (Sandbox Code Playgroud)

Bre*_*ter 16

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


Pas*_*ent 11

据我所知,变量扩展在父元素中不起作用(参见MNG-624和有关此背景的注释),您需要明确设置版本:

<parent>
  <groupId>com.mycompany.app</groupId>
  <artifactId>myapp</artifactId>
  <version>1-SNAPSHOT</version><!-- or whatever version you use -->
  <relativePath>../parent/pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)

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


sup*_*oba 7

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

使用: mvn -N install

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