我有一个类似于下面的项目结构。在聚合器中,POM project1和项目2被定义为modules.Now如果我想添加一个可以在所有项目中访问的maven属性,我该怎么办? 在这种情况下,最好的项目结构是什么。?
如果我在聚合器POM中定义<temp.dir>data</temp.dir>
之类的属性,那么它在project1 pom.xml和project2 POM.xml中不可用。我必须在两个POM中复制相同的属性。
project
- project1
- - pom.xml ---- has parent POM as project A
- project2
- - pom.xml --- has parent POM as project B
- pom.xml (Aggregator POM)
更新:澄清更多project1 pom,项目2有不同的父POM。所以聚合器POM不能设置为父级。
答案 0 :(得分:-1)
您需要将聚合器pom设置为project1
和project2
的父级。
例如。在project1
和project2
poms中添加:
<parent>
<groupId>com.agr</groupId>
<artifactId>project-aggregator</artifactId>
<version>1.0.0</version>
</parent>
编辑:
我知道project1和project2有不同的父poms。
我知道实现你想要的唯一解决方案是将属性存储在父pom中。
我只能想到一个解决方案,就是建立一个继承链:
Project2Parent:
<parent>
<groupId>com.test</groupId>
<artifactId>Project1Parent</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>Project2Parent</artifactId>
<version>0.0.1</version>
聚合:
<parent>
<groupId>com.test</groupId>
<artifactId>Project2Parent</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>Aggregator</artifactId>
<version>0.0.1</version>
PROJECT1
<parent>
<groupId>com.test</groupId>
<artifactId>Aggregator</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>project1</artifactId>
<version>0.0.1</version>
Project2的
<parent>
<groupId>com.test</groupId>
<artifactId>Aggregator</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>project2</artifactId>
<version>0.0.1</version>
答案 1 :(得分:-1)
这是聚合器的pom:
<groupId>y</groupId>
<artifactId>y</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<modules>
<module>y1</module>
<module>y2</module>
</modules>
<properties>
<x>1</x>
</properties>
这是y1
有效pom(由Eclipse生成):
<parent>
<groupId>y</groupId>
<artifactId>y</artifactId>
<version>0.0.1</version>
</parent>
<groupId>y1</groupId>
<artifactId>y1</artifactId>
<version>0.0.1</version>
<properties>
<x>1</x>
</properties>
正如您所看到的,在父级中声明的属性x
由子级继承。