简体   繁体   中英

Maven - activate profile based on project property

Hi I am trying to achieve something like this:

In a parent pom, I have

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.artifactId}</value>
    ...

so that if I run mvn -DCompile=mod1 install under the parent pom, it will only apply the profile settings to module 1, but not the others.

Similarly, if I have

<profile>
  <activation>
    <property>
      <name>Compile</name>
      <value>${project.packaging}</value>
    ...

then running mvn -DCompile=war install under the parent pom, it will only apply the profile settings to those to be packed as war but not jar nor pom.

I tried but it didnt work as expected. Did I miss anything? Please help.

PS no need to suggest workarounds as I am only interested on this method. Simply answer it is not possible with reason if thats the case. Thank you

It won't work since...

To begin with:

And why it would not work from the parent down to the children:

  • The properties in the parent POM are expanded before your child POM even comes in the picture.

Many have gone here before you and failed.

One might wonder what you are really trying to do. Are you building different artifacts from the same source project? Perhaps you need a few more Maven modules to take care of things.

Yes you can activate the profile depending one or variety of parameters like env variables.

<project>
    ...
    <profiles>
        <profile>
            <id>development</id>
            <activation>
                <property>
                    <name>!environment.type</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>

If you are trying to have different packaging depending on X than you can use the assembly plugin and do your magic there http://maven.apache.org/plugins/maven-assembly-plugin/

More on the activation property

As of Maven 3.0, profiles in the POM can also be activated based on properties from active profiles from the settings.xml.

You can check the sample given here :

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM