blob: 00bd43f2e6b779ff3bdb5f722b5b3503d3634e9d [file] [log] [blame]
---
Example: Injecting POM Properties via Settings.xml
---
John Casey
---
20-Apr-2006
---
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.