Filtering
Overview
The package
goal supports filtering (i.e. placeholder replacement) similar to the maven-resources-plugin in arbitrary package source files.
As filtering may destroy binary files you should make sure that filtering is only applied to textual files.
Configuration
You need to set plugin parameter enableJcrRootFiltering
and/or enableMetaInfFiltering
to true
to enable filtering at all.
There are several other parameters which allow to further tweak the filtering behavior.
An example configuration which enables filtering on all .content.xml
files in the jcr root source folder looks like this:
<plugin>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>filevault-package-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<!-- default execution id for primary artifact: https://maven.apache.org/guides/mini/guide-default-execution-ids.html#default-executionids-for-implied-executions -->
<id>default-package</id>
<configuration>
<enableJcrRootFiltering>true</enableJcrRootFiltering><!--only enable filtering on jcr root source files-->
<filterFiles>
<!-- additional properties file specifying keys and values -->
<filterFile>filter.properties</filterFile>
</filterFiles>
<!-- only enable filtering on .content xml files -->
<filteredFilePatterns>
<filteredFilePattern>**/.content.xml</filteredFilePattern>
</filteredFilePatterns>
</configuration>
</execution>
</executions>
</plugin>
Filtering Extensions
Extensions allow to improve the simple placeholder replacement offered by Maven with domain specific features (useful for content packages). All features are opt-in and need to be explicitly enabled with a dedicated expression(-prefix).
Standard Extensions
The following extensions ship with the filevault-package-maven-plugin
Extension | Description | Expression | Usage Example | Since |
---|---|---|---|---|
FileVault DocView XML Attribute Escaping | Escapes the interpolated value of the suffix according to FileVault DocView Escaping Rules for using it inside XML attribute values. | vltattributeescape.<suffix> |
<myNode myProperty="${vltattributeescape.customMavenProperty1}" /> |
1.4.0 |
Custom Extensions
The filtering may be extended through JSR-330 annotated Sisu components implementing the interface org.apache.jackrabbit.filevault.maven.packaging.InterpolatorCustomizerFactory
which creates a Consumer<Interpolator>
for every Maven project. That callback is called whenever the interpolator has been created for filtering but before it is being applied. A InterpolatorCustomizerFactory
usually registers additional InterpolationPostProcessor
s or ValueSource
s on the given Interpolator
.
They need to be loaded as plugin dependencies.