[ 
http://jira.codehaus.org/browse/MWAR-89?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_88128
 ] 

Jochen Wiedmann commented on MWAR-89:
-------------------------------------

The reason for this bug is in the use of the "CompositeMap" for filtering. The 
"CompositeMap" is basically a special Map, which works like this:

- Query the Project in a "magic" way for the property. If something non-null is 
returned, that's the result value.
- Otherwise, query the projects properties and return the result.

The "magic" way is implemented by a utility class called 
ReflectionValueExtractor. The first thing this class does is removing any part 
of the property name until and including a dot. In other words, the lookup for 
"something.url" becomes a lookup for "url". That's of course a valid value. In 
other words, a possible workaround is to change your property name to 
"something_url" and everything should work fine.

I find the behaviour of ReflectionValueExtractor (or the use of it) quite 
questionable. Basically this means that ${whatever.foo} becomes ${project.foo}. 
In other words, the use of the dot (which is quite common if not recommended in 
property names) becomes almost imopssible.

I'd recommend to

- change the implementation of CompositeMap so that it accepts an array of 
Maps, rather than two Maps.
- Instantiate the CompositeMap with the following values, in that order:

     project.getProperties()
     ReflectionMap(project)
     System.getProperties()

I am ready to provide a patch, should I know that my suggestion will be 
accepted.


my re


> filtering ${something.url} ignores my property value and writes 
> http://maven.apache.org/something
> -------------------------------------------------------------------------------------------------
>
>                 Key: MWAR-89
>                 URL: http://jira.codehaus.org/browse/MWAR-89
>             Project: Maven 2.x War Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0.2
>            Reporter: Paul Jungwirth
>            Priority: Minor
>
> I have a multimodule build, and one of the modules is a war. That module has 
> an artifactId of "aardvark." This is aardvark's pom:
> <project>
>   ...
>   <properties>
>     <something.url>http://anywhere.com/</something.url>
>     <another.property>whatever</another.property>
>   </properties>
>   ...
>   <build>
>     <plugins>
>       <plugin>
>         <artifactId>maven-war-plugin</artifactId>
>         <configuration>
>           <webResources>
>             <resource>
>                <directory>${basedir}/src/main/resources</directory>
>                <filtering>true</filtering>
>             </resource>
>           </webResources>
>        </configuration>
>       </plugin>
>     </plugins>
>   </builg>
> </project>
> Inside src/main/resources, I have a file that includes both ${something.url} 
> and ${another.property}. But when I run maven, ${another.property} is 
> filtered correctly, while ${something.url} becomes 
> "http://maven.apache.org/aardvark."; It ignores my value and writes a URL to 
> apache.org instead, appending the artifactId. Weird, huh? This seems to 
> happen with any property that ends in ".url." Is this supposed to be a 
> feature? I've never seen it documented anywhere.
> Thanks,
> Paul

-- 
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

        

Reply via email to