About
A property is used to supplied value of resource files at build time. This process is called filtering.
A property can be:
- one of the values defined in your pom.xml,
- a value defined in the user's settings.xml,
- an environment variable
- a property defined in an external properties file,
- or a system property.
Articles Related
How to
Enable filtering
Filtering is dsiable by default. To enable it, you must modify the filtering element of the Pom.xml.
<project>
.......
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
Define a property
Pom.Xml
<project>
....
<properties>
<my.filter.value>hello</my.filter.value>
</properties>
</project>
External properties file
In src/main/filters/
Example: filter.properties:
# filter.properties
my.filter.value=hello!
The external property file must be defined in the POM.xml
<build>
<filters>
<filter>src/main/filters/filter.properties</filter>
</filters>
.......
</build>
Configuration Property
To reference a property from the configuration files, the property name uses the following syntax:
${AliasRootElement.element}
where:
- AliasRootElement is of:
- settings for settings.xml
- env for environment variable
- Element is an element of the XML file
Some elements have default values and then don't need to be explicitly defined.
Example:
- pom.name refers to the name of the project,
- pom.version refers to the version of the project,
- pom.build.finalName refers to the final name of the file created when the built project is packaged,
- settings.localRepository refers to the path of the user's local repository).
- env.myEnvironmentVariableName refers the the environment variable myEnvironmentVariableName
System properties
Filtering resources can also get values from system properties built into Java like:
- java.version
- user.home
- …
Command Line
Properties can also be defined on the command line using the standard Java -D parameter.
Example: To define the property command.line.prop with the value “hello again”
mvn process-resources "-Dcommand.line.prop=hello again"
Environment variable
Process / Thread - Environment Variable
${env.variable_name}
Built-in properties
https://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html
Use them
The property values will be supplied when the resource is filtered.
Example: application.properties in the src/main/resources directory
# application.properties
application.name=${pom.name}
application.version=${pom.version}
java.version=${java.version}
command.line.prop=${command.line.prop}
Start filtering
mvn process-resources