Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Critical
-
Resolution: Unresolved
-
Affects Version/s: 2.2.1
-
Fix Version/s: Issues to be reviewed for 3.x
-
Component/s: Profiles
-
Labels:None
-
Complexity:Intermediate
-
Number of attachments :
Description
The chapter 5.3.1 of the Maven Complete Reference (edition 0.2.1, Novemeber 2009) speaks unambiguously about considering a logical "AND" between more activation-conditions of a profile (cit.: "A profile is activated when all activation criteria has been satisfied. For example, a profile could list an Operating System family of Windows, and a JDK version of 1.4, this profile will only be activated when the build is executed on a Windows machine running Java 1.4.").
Suprisingly, Maven's real behavior suggests, that the logical "OR" operator is used. The attached demo project contains a profile with two activation-criteria: a property and the existence of a file. As the output shows (attachement output.txt), the fulfillment of a single criterion is enough for activating the profile. Also the corresponding implementation in the Maven core expresses the intention to use an "OR" logic (maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java r813685 (branch 2.2.x), line 268):
for ( Iterator activatorIterator = activators.iterator(); activatorIterator.hasNext(); )
{
ProfileActivator activator = (ProfileActivator) activatorIterator.next();
if ( activator.canDetermineActivation( profile ) )
{
if ( activator.isActive( profile ) )
}
}
return false;
As I'm considering the documentation's variant more reasonable, I'm reporting this as a bug instead of a documentation-issue.
Issue Links
- is related to
-
MNG-1753
support improved property based profile activation
-
Activity
| Field | Original Value | New Value |
|---|---|---|
| Attachment | example2.zip [ 46763 ] |
| Fix Version/s | Issues to be reviewed for 3.x [ 13145 ] |