Apache

Specimen. A proposed redesign of maven.apache.org, built with mvn site and a skin of its own; not the official Apache Maven site. The official site is maven.apache.org. About this example

Docs Configure Maven

Holds for
Not yet checked against Maven 3.9, 3.10 and 4.0
Source
Edit this page
Wrong?
Report a problem

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 xmlns="http://maven.apache.org/POM/4.0.0">
  [...]
  <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 pick up 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.