Why can't I activate a Maven2 profile from another profile?

让人想犯罪 __ 提交于 2019-11-27 01:58:39
Brett Porter

The feature simply doesn't exist. The property activator uses the incoming properties, not anything set by the profiles (as otherwise it wouldn't know what order to activate them in without some more complex logic).

The solution you used, of have identical properties to activate the things you want to do together, is the best solution. I realise that may not always be satisfactory - in that case all you can do is fall back to making the individual profiles as simple as possible so that you can combine them in the ways you want on the command line, without duplicating things across them.

The issue covering this feature is: https://issues.apache.org/jira/browse/MNG-3309
The issue covering the property activation is: https://issues.apache.org/jira/browse/MNG-2276

Issue MNG-2276 mentioned by Brett was resolved in maven 3.x, so you are now allowed to define properties in settings.xml to trigger profiles in your pom. Here is an example:

In settings.xml:

<profile>
    <id>localDist</id>
    <activation>
        <property><name>localDist</name></property>
    </activation>
    <properties>
        <doReleaseTasks>true</doReleaseTasks>
    </properties>
</profile>

In your pom (or better yet, in your parent pom):

<profile>
    <id>doReleaseTasks</id>
    <activation>
        <property><name>doReleaseTasks</name></property>
    </activation>
    <build>
        <plugins>
            ... mvn -DlocalDist will activate these plugins
        </plugins>
    </build>
</profile>

Good idea to use enforcer plugin to force mvn 3.0 or greater:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
                <execution>
                    <id>enforce-maven</id>
                    <goals> <goal>enforce</goal> </goals>
                    <configuration>
                        <rules>
                            <requireMavenVersion>
                                <version>[3.0,)</version>
                                <message>
*** Maven 3.x required to allow cascading profiles to be activated in settings.xml (MNG-2276)
                                </message>
                            </requireMavenVersion>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!