我正在研究的Maven项目继承自父POM,其中一些项目范围的变量是通过在验证阶段执行gmaven-plugin来计算的:
父POM:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5-jenkins-1</version>
<executions>
<execution>
<phase>validate</phase>
<goals><goal>execute</goal></goals>
<configuration>
<providerSelection>2.0</providerSelection>
<source>
project.properties.put("test.property1", "123");
</source>
</configuration>
</execution>
</executions>
</plugin>
现在我想在子POM中使用gmaven-plugin来计算和设置一些额外的参数:
儿童POM:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5-jenkins-1</version>
<executions>
<execution>
<phase>validate</phase>
<goals><goal>execute</goal></goals>
<configuration>
<providerSelection>2.0</providerSelection>
<source>
project.properties.put("test.property2", "abc");
</source>
</configuration>
</execution>
</executions>
</plugin>
但是,这会导致父项中定义的插件消失/被覆盖。有效POM仅包含子项中定义的插件,test.property1
最终为null
。
如何在孩子的父和中执行Maven插件,而不会相互干扰?
答案 0 :(得分:1)
阅读this博客条目如何合并配置。这可能会解决您的问题。
答案 1 :(得分:1)
add :
<inherited>true</inherited>
like :
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5-jenkins-1</version>
<inherited>true</inherited>
答案 2 :(得分:0)
据我记得,你可以在儿童游戏中配置另一个“执行”部分,所有对父插件的引用都会消失。