[ 
https://issues.apache.org/jira/browse/MNG-6094?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15513779#comment-15513779
 ] 

Guillaume Boué commented on MNG-6094:
-------------------------------------

This point was discussed not so long ago on the mailing list: see the thread 
called "Profile Activation" here 
http://mail-archives.apache.org/mod_mbox/maven-dev/201608.mbox/thread. The 
following configuration

{noformat}
<profile>
    <id>test-profile</id>
    <activation>
        <property>
            <name>something</name>
            <value>!a</value>
        </property>
    </activation>
    ...
</profile>
{noformat}

should be understood as always activate, _unless_ {{something}} is equal to 
{{a}}, regardless of the presence of {{something}}.

The documentation will be updated to clarify this.

> Maven Profile activation (via property) bug (or misleading doc): profile 
> active even if property doesn't exist
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-6094
>                 URL: https://issues.apache.org/jira/browse/MNG-6094
>             Project: Maven
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.3.9
>         Environment: Windows 7
>            Reporter: A. Di Matteo
>
> Based on the following profile:
> {code}
> <profile>
>     <id>test-profile</id>
>     <activation>
>         <property>
>             <name>something</name>
>             <value>!a</value>
>         </property>
>     </activation>
>     ...
> </profile>
> {code}
> And not setting the something property, the profile is always active (by 
> default). This is in contradiction with the official Maven profile 
> documentation on the !true value example:
> {quote}
> The following profile will be activated when the system property "debug" is 
> defined with a value which is not "true".
> {quote}
> A bug or misleading documentation?
> If the mechanism is still implemented by the SystemPropertyProfileActivator, 
> deprecated but not documented by which componenet it was replaced, if already 
> replaced, then the (potential) bug is confirmed by the following shortened 
> code:
> ActivationProperty property = activation.getProperty();
> {code}
> if ( property != null ) {
>     String name = property.getName();
>     boolean reverseName = false;
>     String sysValue = properties.getProperty( name );
>     String propValue = property.getValue();
>     if ( StringUtils.isNotEmpty( propValue ) ) {
>         boolean reverseValue = false;
>         if ( propValue.startsWith( "!" ) ) {
>             reverseValue = true;
>             propValue = propValue.substring( 1 );
>         }
>         // we have a value, so it has to match the system value...
>         boolean result = propValue.equals( sysValue );
>         if ( reverseValue ) {
>             return !result;
>         }
>         else {
>             return result;
>         }
>     }
> }
> {code}
> The issue is: the sysValue real property value by the defined name is not 
> taken into account, it will be null in this specific case. However, its check 
> on equals will return false, but then the further check on reverseValue would 
> turn it to true, regardless of the existence of the name property and 
> effectively activating the profile in this case.
> Full description at:
> http://stackoverflow.com/q/39632024/5606016



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

Reply via email to