覆盖Maven中父POM的模块属性

时间:2013-09-05 16:28:17

标签: java maven maven-3 pom.xml parent-pom

是否可以在不更改模块pom的情况下从父pom覆盖模块属性?

例如:

模块pom(我根本无法改变它):

<properties>
    <someProperty>some value to be replaced</properties>
</properties>

父母:

<properties>
    <someProperty>strongValue</someProperty> <!-- some magic here -->
</properties>

有效模块pom:

<properties>
    <someProperty>strongValue</someProperty>
</properties>

如果是,那么如何实现呢?

3 个答案:

答案 0 :(得分:9)

我知道这样做的唯一方法是在命令行上定义属性,例如mvn -DsomeProperty=strongValue <mvn goals/phases here>

您可以尝试在父级中定义的配置文件;我怀疑这无济于事。

答案 1 :(得分:8)

不,你不能。我们的想法是,如果不能覆盖值,请不要使用属性。如果您没有其他选项,您可能希望强制使用http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html,如果某个属性的值与预期值不同,则会破坏构建。

答案 2 :(得分:0)

子POM可以覆盖在父pom中定义的属性的值。因此,只需在子POM中放置一个节并将值设置为所需值即可。