26

是否可以使模块 pom 无法覆盖父 pom 中的属性?

例如:

如果模块 pom 说:

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

并且父 pom 已经将其声明为:

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

有效的模块 pom 应该是:

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

但目前预计是这样的:

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

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

4

3 回答 3

11

不,你不能。这个想法是,如果不能覆盖一个值,就不要使用属性。如果您没有其他选择,您可能希望使用http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html强制它,如果属性的值与预期不同,这将破坏构建。

于 2013-09-08T17:17:52.840 回答
10

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

您可以尝试在父级中定义的配置文件;我怀疑这不会有帮助。

于 2013-09-05T16:52:07.737 回答
-1

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

于 2019-01-17T18:46:23.463 回答