Fabrizio Lungo created MNG-6000:
-----------------------------------

             Summary: activeProfiles in pom.xml
                 Key: MNG-6000
                 URL: https://issues.apache.org/jira/browse/MNG-6000
             Project: Maven
          Issue Type: Improvement
          Components: POM, Profiles
            Reporter: Fabrizio Lungo


I would like to see the ability to define {{<activeProfiles>}} in a pom. I 
think this would be extremely useful and provide a way for a parent pom to 
provide a set of profiles that can be picked and chosen from as per the needs 
of the project.

A simple but specific example is where I would like to have a profile from our 
corporate parent pom that is activated when a project should build an 
executable jar. This profile provides the configuration for the 
{{maven-jar-plugin}} (as well as adding some validations and checks) and we 
would like to activate this on a per project level.

Initially I tried using properties but activation conditions only look at 
system properties (and not pom defined ones) and even using a property in the 
{{<activateByDefault>}} tag. As described in MNG-5235 this is because profiles 
need to be processed first and using properties from the pom would create 
chicken-egg problems and inconsistencies because a profile can then modify 
these properties.

If {{<activeProfiles>}} were to be added to pom, this could be read first to 
determine if any profiles need to be activated and allow a pom to define which 
profiles will be active by default.

Two optional features that could be implemented to supplement this would be:
* Support for {{<activeProfiles>}} inside of a profile for profiles to be able 
to recursively enable other profiles (that they may depend on). This would 
allow reduction of duplication if two profiles require some shared 
preconditions they can then just activate the profile with this shared 
configuration and if one or both are activated, the shared configuration 
profile will be activated too. This should be fairly easy to implement using 
recursive checks and not revisiting any profiles already in an active list (to 
avoid cycles - which should be warned about - and unnecessary re-evaluations)
* Support for disabling profiles (possibly by using 
{{<profile>!profile-1</profile>}} syntax. This could have advantages where a 
parent pom activates a profile by default and the child wants it disabled by 
default although I can see this may cause problems.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to