我有一个多模块 Maven 3 项目,其中有一个协调器/构建 pom,其唯一的工作是运行 Maven 构建。每个模块都已经有其父 pom,但没有一个是此 Orchestrator pom。
在 Orchestrator pom 中是否有任何方法可以设置/指定模块将使用的属性值?由于模块不继承 Orchestrator pom,因此它们不知道其中设置/指定的任何属性值(例如:${buildEngine} 或 ${cluster})。
例如:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sbic</groupId>
<artifactId>builder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Orchestrator Pom</name>
<properties>
<buildEngine>Geronimo</buildEngine>
<cluster>peanuts</cluster>
</properties>
<modules>
<!-- Supert POM Component Versionning -->
<module>SbiComMavenCommon</module>
<!-- Projects -->
<module>../AlertServices</module>
<module>../Configuration</module>
<module>../Core</module>
</modules>
</project>
为了构建我的项目,我只需在此构建器 pom 上调用 mvn package
即可。
我正在寻找的是能够在此构建器 pom 中指定属性,然后模块将使用这些属性,不要求模块在其父树中包含此 pom。
例如,可以完成以下任务(显然不是有效的 pom 语法):
<module>
../Core
<properties>
<name>SomeValue</name>
<server>192.168.1.2</server>
</properties>
</module>
最佳答案
据我所知,没有直接的方法可以使用 Maven 来做到这一点。但是,有一个解决方法 - 使用 properties:set-system-properties来自 Properties Maven 插件
当然,对于任何全局共享可变状态,需要注意。例如,不尊重模块父/子关系。尽管看起来你无论如何都想要它。
关于java - 有什么方法可以从协调器(非父)pom 指定模块属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047582/