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.