如何避免父级中定义的Maven插件被子级覆盖?
我正在处理的Maven项目继承自父POM,其中一些项目范围内的变量是通过在验证阶段执行gmaven插件来计算的: 父POM:如何避免父级中定义的Maven插件被子级覆盖?,maven,pom.xml,maven-plugin,overriding,Maven,Pom.xml,Maven Plugin,Overriding,我正在处理的Maven项目继承自父POM,其中一些项目范围内的变量是通过在验证阶段执行gmaven插件来计算的: 父POM: <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.5-jenkins-1</version> <executions>
<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>
<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>
org.codehaus.gmaven
gmaven插件
1.5-jenkins-1
验证
执行
2
项目.属性.投入(“测试.属性1”,“123”);
现在我想在子POM中使用gmaven插件来计算和设置一些额外的参数:
子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>
<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>
org.codehaus.gmaven
gmaven插件
1.5-jenkins-1
验证
执行
2
项目.属性.投入(“测试.属性2”,“abc”);
但是,这会导致父级中定义的插件消失/被覆盖。有效的POM只包含在子项中定义的插件,而测试.property1
最终为null
如何在父插件和子插件中执行Maven插件,而不使它们相互干扰?阅读博客文章如何合并配置。这可能会解决您的问题。据我所知,您只需在孩子的pom中配置另一个执行部分,所有对家长插件的引用就会消失。
添加:
add :
<inherited>true</inherited>
like :
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5-jenkins-1</version>
<inherited>true</inherited>
真的
比如:
org.codehaus.gmaven
仅在子pom中配置另一个执行部分不起作用。事实上,这就是问题所在。子级覆盖父级,只有test.property2
可用,而test.property1
为null