Example: Injecting POM Properties via Settings.xml
Impetus
You have a plugin parameter that should contain a user-specific value. This parameter has a common format (relative directory structure), but depends on knowing the directory of the installed application or something.
Plugin Configuration
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.myproject.plugins</groupId>
<artifactId>my-cool-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<deploymentDirectory>${application-home}/deploy</deploymentDirectory>
</configuration>
</plugin>
</plugins>
</build>
settings.xml
<settings>
[...]
<profiles>
<profile>
<id>inject-application-home</id>
<properties>
<application-home>/path/to/application</application-home>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>inject-application-home</activeProfile>
</activeProfiles>
</settings>
Explanation
When Maven loads the project's POM, it will pickup the activated profiles from the activeProfiles
section of the settings.xml
file, and inject the properties declared within the profile. When the POM is interpolated, the application-home
property will already have been injected, so will allow the plugin's parameter value to be resolved.