【问题标题】:Maven: How to activate child profile using parent's activation criteriaMaven:如何使用父激活条件激活子配置文件
【发布时间】:2018-07-03 15:21:36
【问题描述】:

我有一个父/根 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 中,我声明了与父级相同的配置文件,并希望在我使用父级(animal == cat)的激活标准构建moduleA 时激活它。但这行不通。所以如果这是moduleA的POM:

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

我使用mvn help:evaluate -Danimal=cat 构建moduleA,评估${shape} 说它的值是circle,而不是我期望的square。因此,在使用其父级的激活标准构建时,子级配置文件似乎没有激活。

有没有办法做到这一点?我真的必须将 &lt;activation&gt; 块从父模块复制并粘贴到它的所有子模块中,才能获得相同的行为吗?

【问题讨论】:

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


    【解决方案1】:

    尝试在模块A 中重复激活条件。您不必重复父级的其他配置文件内容,但激活条件需要匹配。

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-20
      • 2011-11-12
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 2013-10-02
      • 2019-11-02
      • 2010-12-03
      相关资源
      最近更新 更多