示例:通过 Settings.xml 注入 POM 属性

动力

你有一个插件参数,它应该包含一个用户特定的值。这个参数有一个通用的格式(相对目录结构),但是取决于知道安装的应用程序的目录什么的。

插件配置

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

解释

当 Maven 加载项目的 POM 时,它将从文件的activeProfiles部分中提取激活的配置settings.xml文件,并注入配置文件中声明的属性。当 POM 被插值时,该application-home属性已经被注入,因此将允许解析插件的参数值。