Maven Filtering

These Plexus components have been built from the filtering process/code in Maven Resources Plugin.

The goal is to provide a shared component for all plugins which needs to filter resources.

What's New in 1.0-beta-2 (All of this new features are configurable with the MavenResourcesExecution bean)

Release Note

The release note is available here.

Pom interpolation

[MSHARED-60] something like ${foo.url} was interpolated to the value of pom url. Now pom values will interpolated only with expressions starting with pom or project (it's configurable).
This means before something like ${foo.version} or ${version} was interpolated with the current pom version. Now it won't be interpolated with a pom value.

Escaping Interpolation

[MSHARED-51] It's possible now to define a String which will escape interpolation.
\${java.home} will be interpolated to ${java.home}

targetPath accepts now absolute paths too

overwrite parameter

[MSHARED-67] Add a new parameter to force file copy even if the destination file is newer.

MavenResourcesFiltering

This component will apply filtering on a List of org.apache.maven.model.Resource.

If you want to use the default List of FileUtils.FilterWrapper (see below) you should use the method without the filterWrappers parameter.

The component will not filter a predefined set of file extensions (jpg, jpeg, gif, bmp, png). Note: you can easily add extra file extensions.

MavenFileFilter

This component has a method which returns the default FileUtils.FilterWrapper. These are:

  • interpolation with token ${ } and values from properties files, project.build.filters, project.properties and mavenSession.executionProperties
  • interpolation with token @ @ and values from properties files, project.build.filters, project.properties and mavenSession.executionProperties
  • interpolation with token ${ } and values from mavenProject interpolation
  • interpolation with token @ @ and values from mavenProject interpolation

The values used for interpolation are stored in a Properties object and are loaded in the following order:

  • A List of properties files, provided as a parameter to the method
  • Filters defined in the <build>/<filters> section of the POM
  • Properties defined in the <properties> section of the POM
  • The executionProperties from the current MavenSession

Note: As it's a Properties object, the last defined key/value pair wins.

Note: When building the Properties object and reading the properties files defining the different filters, interpolation with the token ${ } is supported for these filters with limited properties values coming from project.properties and mavenSession.executionProperties. The last wins here too.