You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Barnabas Bodnar (JIRA)" <ji...@codehaus.org> on 2010/01/05 21:09:55 UTC
[jira] Updated: (MNG-4516) Contradiction between the documentation
and Maven's behavior related to profile-activation with multiple criteria
[ http://jira.codehaus.org/browse/MNG-4516?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Barnabas Bodnar updated MNG-4516:
---------------------------------
Attachment: example2.zip
I have provided another example (example2.zip), analogue to that mentioned in the chapter 5.3.1 of the Maven Complete Reference. The profile-activation is conditioned by two critera: the operating-system family Windows and JDK version 1.5:
{noformat}
<activation>
<os>
<family>windows</family>
</os>
<jdk>1.5</jdk>
</activation>
{noformat}
By the documentation, it is expected that the profile will *only be activated when the build is executed on a Windows machine running Java 1.5*.
However, executing the build under Windows with *JDK 1.6* already leads to the activation of the profile (see example2.zip#output_windows_jdk16.txt), similarly to executing the build under *Linux* with JDK 1.5 (see example2.zip#output_linux_jdk15.txt). Consequently, *one single criterion* was enough for activating the profile, in contrast to the behavior described in the documentation ("A profile is activated when *all activation criteria* has been satisfied.").
Is the actual behavior the intended one and the documentation erroneous, or inversely?
> Contradiction between the documentation and Maven's behavior related to profile-activation with multiple criteria
> -----------------------------------------------------------------------------------------------------------------
>
> Key: MNG-4516
> URL: http://jira.codehaus.org/browse/MNG-4516
> Project: Maven 2 & 3
> Issue Type: Bug
> Components: Profiles
> Affects Versions: 2.2.1
> Reporter: Barnabas Bodnar
> Priority: Critical
> Attachments: debug_output.txt, example2.zip, output.txt, pom.xml
>
>
> 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 true;
> }
> }
> }
> return false;
> As I'm considering the documentation's variant more reasonable, I'm reporting this as a bug instead of a documentation-issue.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira