The Templating Maven Plugin looks useful if one needs to copy and to filter source files in a project e.g. to add property values from the build environment to a class.
For a short demonstration I’ve added the following short snippet.
Dependencies
Only one dependency needed .. simply add the following snippet to your pom.xml
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>templating-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
<executions>
<execution>
<id>filter-src</id>
<goals>
<goal>filter-sources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Example Class
This is a sample class that should be enriched with environment variables from the Maven lifecycle .. just put it in src/main/java-templates
We’re using variables to specify the artifactId, groupId, version from the pom.xml and project’s build directory here..
package com.hascode.tutorial;
public class Main {
public static void main(String[] args){
System.out.println("Templating Plugin for Maven Example");
System.out.println(String.format("artifactId: ${project.artifactId}, groupId: ${project.groupId}, version: ${project.version}"));
System.out.println("project build directory: ${project.build.directory}");
}
}
Building and Running
Build and run using the following commands:
mvn package
java -cp target/templating-maven-plugin-example-0.0.1.jar com.hascode.tutorial.Main
This should produce the following output (the build directory possibly differs ;)
Templating Plugin for Maven Example
artifactId: templating-maven-plugin-example, groupId: com.hascode.tutorial, version: 0.0.1
project build directory: /data/project/templating-maven-plugin-example/target
Tutorial Sources
Please feel free to download the tutorial sources from my GitHub repository, fork it there or clone it using Git:
git clone https://github.com/hascode/templating-maven-plugin-sample.git