在Maven反应堆构建中包含父项目

3
我是一个有用的助手,可以帮助您翻译文本。
我正在尝试创建一个综合POM来从零开始构建我们所有的项目。假设我有一个父项目和两个代码项目。它们都在不同的源树中。
父项目:
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

项目 A:

<parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath/>
</parent>

<artifactId>project-A</artifactId>
<packaging>jar</packaging>

项目 B:

<parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath/>
</parent>

<artifactId>project-B</artifactId>
<packaging>jar</packaging>

现在我正在尝试创建一个单独的聚合POM,将它们全部一起构建,就像这样:

<groupId>com.example</groupId>
<artifactId>aggregator</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>path/to/parent</module>
    <module>path/to/project-A</module>
    <module>path/to/project-B</module>
</modules>

在“聚合器”项目上运行mvn clean install会失败,因为反应堆找不到这两个代码项目的<parent>。原因很明显-parent项目是反应堆的一部分,因此在构建开始时该工件不存在。
有没有办法实现这种反应堆构建?

如果你的上级是反应堆的一部分,那么聚合器就没有意义。你应该根据所需的结构来组织你的项目,这意味着根级别的上级和子模块放置在子级别中...然后上级应该包含模块条目...这样一切都会正常工作。 - undefined
@khmarbaise 父级是整个公司的根pom,所以我无法更改其内容。然而,在构建自己的项目之前,我确实希望引入父级的任何更改。 - undefined
3个回答

2
您需要在父POM中指定以下部分:

<modules>
<module>path/to/parent</module>
<module>path/to/project-A</module>
<module>path/to/project-B</module> 
</modules>

抱歉,父POM是公司范围内的,所以无法为我的特定项目进行更改。 - undefined

2

如果你需要创建一个父级别的元素:

 pom.xml (inherit from company)
   +--- project-A
   +--- project-B 

这将解决那些问题...


2
您只需执行 mvn install 一次,即可安装父级程序。
然后,它将存在于您的本地仓库中,聚合器将找到它。从那时起,反应堆将识别继承关系并始终首先重建父级程序。

2
mvn install -N 也会安装父模块,而不会执行子模块的安装。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接