似乎无法覆盖插件执行的目标定义。
假设我有一个Jetty的父配置,它定义了一个
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
现在我想在特定项目的本地运行爆炸
如果我尝试使用
覆盖本地项目中的父定义 <execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-exploded</goal>
</goals>
</execution>
然后我有效的pom变成了
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
<goal>run-exploded</goal>
</goals>
</execution>
我很惊讶,因为我一直以为它会覆盖。
这是Maven3中的新行为吗?
无论如何都要获得最重要的行为而不是当前行为?
答案 0 :(得分:10)
我找到的方法是禁用继承配置并创建一个新配置:
<execution>
<id>start-jetty</id>
<phase>none</phase>
</execution>
<execution>
<id>my-start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-exploded</goal>
</goals>
</execution>
答案 1 :(得分:2)
这是继承按照设计的方式工作。您应该考虑从父pom中删除您的jetty配置并将其放在配置文件中,或者尝试使用值为false的<inherited>
元素,看看这是否适合您。