Filters for copy-resources goal in plugin configuration section are ignored
---------------------------------------------------------------------------

                 Key: MRESOURCES-77
                 URL: http://jira.codehaus.org/browse/MRESOURCES-77
             Project: Maven 2.x Resources Plugin
          Issue Type: Bug
    Affects Versions: 2.3
            Reporter: Daniel Uribe


I need to have a project where I can create multiple versions of resource files 
using different filters, I am trying to use the copy-resources goal for this 
purpose by making it part of the generate-resource phase and specifying the 
filters and resources under the plugin section of the POM.

<plugins>
        <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                        <execution>
                                <id>config-a</id>
                                <phase>generate-resources</phase>
                                <goals>
                                        <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                        <outputDirectory>
                                                
${basedir}/target/generated-resources/a
                                        </outputDirectory>
                                        <filters>
                                                <filter>a.properties</filter>
                                        </filters>
                                        <resources>
                                                <resource>
                                                        
<directory>etc/build</directory>
                                                        
<filtering>true</filtering>
                                                        <includes>
                                                                
<include>jndi.properties</include>
                                                        </includes>
                                                </resource>
                                        </resources>
                                </configuration>
                        </execution>
                        <execution>
                                <id>config-b</id>
                                <phase>generate-resources</phase>
                                <goals>
                                        <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                        <outputDirectory>
                                                
${basedir}/target/generated-resources/b
                                        </outputDirectory>
                                        <filters>
                                                <filter>b.properties</filter>
                                        </filters>
                                        <resources>
                                                <resource>
                                                        
<directory>etc/build</directory>
                                                        
<filtering>true</filtering>
                                                        <includes>
                                                                
<include>jndi.properties</include>
                                                        </includes>
                                                </resource>
                                        </resources>
                                </configuration>
                        </execution>
                </executions>
        </plugin>
        <!-- Other plugin entries -->
</plugins>

After doing some debugging, the problem seems to be caused by a combination of 
things:

- The CopyResourcesMojo doesn't define its own filters field, so it inherits 
the configuration from the ResourcesMojo. That configuration specifies that it 
uses ${project.build.filters} by default. This is part of the plugin.xml in the 
repository as
      <filters 
implementation="java.util.List">${project.build.filters}</filters>
- When the merging of the plugin.xml configuration from the repository with the 
configuration from the POM is done, it includes the filters that were specified 
in the POM, but also includes the default value and implementation attribute. 
Hence, when the plugin fields are populated (in 
DefaultPluginManager.populatePluginFields), it gets the value 
${project.build.filters} instead of using the <filter> children from the POM 
configuration.

I am not really sure what could be a good solution. Removing the default of 
${project.build.filters} for the CopyResourcesMojo would make this scenario 
work, but it would make the filters required when the plugin is declared in the 
plugins section.

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