我想覆盖pom.xml中定义的特定插件配置。我不想出于各种原因修改pom.xml。有没有办法在settings.xml中为该插件定义一个覆盖相应pom.xml插件配置的配置属性?
在下面的示例中,您会注意到插件xx-plugin
在pom.xml中的profile1
中定义。在我的settings.xml中,我已经定义了profile2
来覆盖pom.xml中的属性prop1
。但是如何覆盖config3
。如果这是一个愚蠢的问题,我道歉。我对maven有点新鲜。
这就是我的pom.xml:
<profile>
<id>profile1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.xx.yyy</groupId>
<artifactId>xx-plugin</artifactId>
<executions>
<execution>
<id>xx-install</id>
<phase>install</phase>
<goals>
<goal>xx-install</goal>
</goals>
<configuration>
<config1>AAA</config1>
<config2>BBB</config2>
<config3>CCC</config3> <!-- I want to override this with value DDD -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这就是我的settings.xml:
<profile>
<id>profile2</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<prop1>overriden-value</prop1> <!-- This works -->
</properties>
<!-- Somehow override config3 here -->
<!-- <config3>DDD</config3> -->
</profile>
答案 0 :(得分:0)
AFAIK您只能使用settings.xml
个人资料覆盖属性。您必须更改插件的配置才能使用属性而不是固定值:
<!-- define your property -->
<properties>
<prop1>CCC</prop1>
</properties>
<profile>
<id>profile1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.xx.yyy</groupId>
<artifactId>xx-plugin</artifactId>
<executions>
<execution>
<id>xx-install</id>
<phase>install</phase>
<goals>
<goal>xx-install</goal>
</goals>
<configuration>
<config1>AAA</config1>
<config2>BBB</config2>
<config3>${prop1}</config3> <!-- I want to override this with value DDD -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
请注意,如果在构建调用中激活了任何其他配置文件,则activeByDefault
设置为true
的配置文件将被停用。见http://maven.apache.org/guides/introduction/introduction-to-profiles.html
答案 1 :(得分:0)
如果您不想更改插件的pom.xml,则可以按照Generic Configuration chapter的Maven Guide to Configuring Plugins中所述,在运行maven时将配置设置为JVM参数。
示例:
mvn my-plugin:my-goal -Dplugin.property=ABC
wildfly插件的示例(这是我需要的地方,在域上下文中部署到服务器组时不想更改演示项目的pom.xml):
mvn clean install wildfly:deploy -Dwildfly.serverGroups=<server-group-name>
maven文档还指出,大多数插件都定义了help goals来解释用户如何配置它们。
wildfly插件的示例:
mvn wildfly:help -Dgoal=deploy -Ddetail