| --- |
| 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. |
| |
| |