【问题标题】:Activate Maven profile if another profile is not activated如果未激活另一个配置文件,则激活 Maven 配置文件
【发布时间】:2014-10-29 06:17:00
【问题描述】:

问题与Maven: Only activate profile A if profile B is not activated?有关,但更具体。

如果我输入以下内容之一:

mvn clean install -PspecificProfile
mvn clean install -Dsmth -PspecificProfile
mvn clean install -Dsmth -PspecificProfile,anotherProfile

然后我想激活specificProfile 个人资料。 (+额外指定的配置文件)

如果我输入其他类似的内容:

mvn install
mvn clean install
mvn clean install -Dsmth
mvn clean install -Dsmth -PanotherProfile
mvn clean install -Dsmth -PdefaultProfile
mvn clean install -Dsmth -PdefaultProfile,anotherProfile

然后我想激活defaultProfile(+其他指定的配置文件)。

想法:

if ( specific profile P is used via command line ) {
    activate P;
} else {
    activate the default profile;
}
activate other specified profiles;

示例:

mvn ...                          // default
mvn ... -PspecificProfile        // specificProfile           (no default!)
mvn ... -Px                      // default + x
mvn ... -Px,y                    // default + x + y
mvn ... -Px,specificProfile      // x + specificProfile       (no default!)
mvn ... -Px,specificProfile,y    // x + specificProfile + y   (no default!)

我试图做这样的事情(在 pom.xml 中):

<profile>
    <id>defaultProfile</id>
    <activation>
        <property>!x</property>
    </activation>
    ...
</profile>
<profile>
    <id>specificProfile</id>
    <properties>
        <x>true</x>
    </properties>
    ...
</profile>

但它不起作用。

【问题讨论】:

    标签: java maven build maven-3 maven-profiles


    【解决方案1】:

    当您致电mvn ... -P x 时,个人资料 x 将是唯一有效的个人资料。来自 maven 文档的原因:

      Profiles can be explicitly specified using the -P CLI option.
      This option takes an argument that is a comma-delimited list of profile-ids to
    use. When this option is specified, no profiles other than those specified in
    the option argument will be activated.
    

    这里有一个解决方法:

    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <property>
                    <name>!specific</name>
                </property>
            </activation>
        </profile>
        <profile>
            <id>specific</id>
            <activation>
                <property>
                    <name>specific</name>
                </property>
            </activation>
        </profile>
        <profile>
            <id>x</id>
            <activation>
                <property>
                    <name>x</name>
                </property>
            </activation>
        </profile>
        <profile>
            <id>y</id>
            <activation>
                <property>
                    <name>y</name>
                </property>
            </activation>
        </profile>
    </profiles>
    

    命令:

    mvn ...                        // default
    mvn ... -Dspecific             // specific Profile         (no default!)
    mvn ... -Dx                    // default + x
    mvn ... -Dx -Dy                // default + x + y
    mvn ... -Dx -Dspecific         // x + specific Profile     (no default!)
    mvn ... -Dx -Dspecific -Dy     // x + specific Profile + y (no default!)
    

    执行mvn ... help:active-profiles获取活动配置文件的ID列表。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2011-07-17
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 2019-05-17
      • 2015-08-19
      相关资源
      最近更新 更多