我试图创建一个聚合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
项目是反应堆的一部分,因此在构建开始时工件不存在。
有没有办法实现这个反应堆的构建?
答案 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将识别继承并始终首先重建父级。