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

时间:2016-07-09 00:24:41

标签: maven build maven-3 maven-reactor

我试图创建一个聚合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项目上的

aggregator失败,因为反应堆无法找到两个代码项目的<parent>。原因很明显 - parent项目是反应堆的一部分,因此在构建开始时工件不存在。

有没有办法实现这个反应堆的构建?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

比你应该创建父母:

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

这将解决这些问题......

答案 2 :(得分:2)

您只需要mvn install父母一次。

然后它将在您的本地存储库中,聚合器将找到它。从那时起,reactor将识别继承并始终首先重建父级。