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插件而不会互相干扰?
它不工作“只是配置子POM另一处决节”。这实际上是问题所在。子代覆盖父代,只有'test.property2'变为可用,而'test.property1'为'null' – dokaspar