Maven:如何使用父级激活标准激活子配置文件

时间:2018-01-24 14:30:13

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

我有一个父/根POM,(1)聚合子模块,(2)声明一个基于属性值有条件激活的配置文件。所以:

<packaging>pom</packaging>
<modules>
    <module>moduleA</module>
    <module>moduleB</module>
    <module>moduleC</module>
</modules>
<profiles>
    <profile>
        <id>myProfile</id>
        <activation>
            <property>
                <name>animal</name>
                <value>cat</value>
            </property>
        </activation>
    </profile>
</profiles>

moduleA中,我声明与父级相同的配置文件,并且希望在使用父级(moduleA)的激活条件构建animal == cat时激活它。但那不起作用。所以如果这是模块A的POM:

<properties>
    <shape>circle</shape>
</properties>
<profiles>
    <profile>
        <id>myProfile</id>
        <properties>
            <shape>square</shape>
        </properties>
    </profile>
</profiles>

我使用moduleA构建mvn help:evaluate -Danimal=cat,评估${shape}表示其值为circle,而非square正如我所期望的那样。因此,在使用其父级激活标准进行构建时,似乎未激活子配置文件。

有办法做到这一点吗?我是否真的必须将<activation>块从父级复制并粘贴到其所有子级模块中,这样我才能获得相同的行为?

1 个答案:

答案 0 :(得分:0)

尝试重复moduleA中的激活条件。您不应该从父级重复其他个人资料内容,但激活条件需要匹配。

<profile>
    <id>myProfile</id>
    <activation>
        <property>
            <name>animal</name>
            <value>cat</value>
        </property>
    </activation>
</profile>

通常尝试从一个模块到另一个模块共享配置文件配置是棘手的。还有其他问题: