首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多模块构建中,为什么需要告诉子模块在哪里找到父POM?

在多模块构建中,为什么需要告诉子模块在哪里找到父POM?
EN

Stack Overflow用户
提问于 2013-03-26 07:43:30
回答 1查看 2K关注 0票数 1

考虑以下平面多模块布局的场景:

代码语言:javascript
复制
| parent-pom
|     - pom.xml
| module1
|     - pom.xml

其中parent-pom/pom.xml是所有模块的父级POM:

代码语言:javascript
复制
<groupId>my-group</groupId>
<artifactId>parent-pom</artifactId>
<version>1.0.0</version>
...
...
<module>../module1</module>

现在,pom.xml of module1包含以下parent部分:

代码语言:javascript
复制
<parent>
    <groupId>my-group</groupId>
    <artifactId>parent-pom</artifactId>
    <version>1.0.0</version>
</parent>

我从一个干净的本地存储库开始;没有一个工件是预先构建的,一切都是从零开始完成的。尝试在mvn install上执行parent-pom将导致一个错误,因为Maven反应堆将在本地存储库中查找my-group:base-pom,失败(因为它不在那里),然后查找../pom.xml

很好。我的问题是:如果module1的构建是通过构建parent-pom来调用的,那么为什么Maven还要在任何地方查找父的pom.xml呢?当Maven开始构建module1时,它已经知道了以下几点:

  1. 文件系统的物理位置,my-group:parent-pom:1.0.0的物理位置。
  2. module1植根于my-group:parent-pom:1.0.0这一事实。

为什么找别的地方?

EN

回答 1

Stack Overflow用户

发布于 2013-03-26 08:31:04

POM简介:项目继承:示例2告诉我们如下:

情景

但是,如果父项目已经安装在本地存储库中或位于特定的目录结构中(父pom.xml比模块的pom.xml高出一个目录),这将有效。

但是,如果尚未安装父目录结构,并且目录结构为

代码语言:javascript
复制
.
 |-- my-module
 |   `-- pom.xml
 `-- parent
     `-- pom.xml

解决方案

要解决这个目录结构(或任何其他目录结构),我们必须将<relativePath>元素添加到父部分。

代码语言:javascript
复制
<project>
    <parent>
        <groupId>com.mycompany.app</groupId>
        <artifactId>my-app</artifactId>
        <version>1</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>my-module</artifactId>
</project>

顾名思义,它是从模块的relative path pom.xml到父pom.xmlpom.xml

编辑:

getRelativePath告诉我们如下

获取签出中父pom.xml文件的相对路径。默认值是./po.xml。Maven首先在当前构建项目的反应堆中查找父pom,然后在文件系统上的这个位置查找父pom,然后在本地存储库中查找父pom,最后在远程回购中查找。relativePath允许您选择不同的位置,例如,当您的结构比较平坦时,或者在没有中间父pom的情况下,选择更深的位置,例如。但是,组ID、工件ID和版本仍然是必需的,并且必须与给定位置的文件匹配,否则它将恢复到POM的存储库。此特性仅用于增强该项目的本地签出中的开发。

我希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15631827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档