2015-10-05 64 views
0

Maven项目我工作的继承,其中一些项目范围的变量都通过在验证阶段执行gmaven-插件计算父POM:如何避免父级中定义的Maven插件被孩子覆盖?

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

现在,我想也使用gmaven-插件在孩子POM计算并设置一些额外的参数:

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

阅读this博客条目如何合并configs。这可能会解决您的问题。

0

据我记得你可以在孩子的pom中配置另一个Executions部分,并且所有对父级插件的引用都会消失。

+0

它不工作“只是配置子POM另一处决节”。这实际上是问题所在。子代覆盖父代,只有'test.property2'变为可用,而'test.property1'为'null' – dokaspar