禁用在父POM中定义的Maven插件
我正在使用一个父POM,它定义了一个我不想在一个子POM中运行的插件。 我怎样才能完全禁用孩子pom的插件?
约束:我不能改变父POM本身。
以下工作适用于我禁用孩子POM中的Findbugs:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId> <executions> <execution> <phase>none</phase> </execution> </executions> </plugin>
注意:Findbugs插件的完整定义在我们的父级/超级POM中,所以它将inheritance版本等等。
在Maven 3中,你需要使用:
<configuration> <skip>true</skip> </configuration>
为插件。
看看插件是否有'skip'configuration参数。 几乎所有人都这样做。 如果是这样,只需将其添加到孩子的声明中:
<plugin> <groupId>group</groupId> <artifactId>artifact</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>
如果不是,则使用:
<plugin> <groupId>group</groupId> <artifactId>artifact</artifactId> <executions> <execution> <id>TheNameOfTheRelevantExecution</id> <phase>none</phase> </execution> </executions> </plugin>
线程是旧的,但也许有人仍然感兴趣。 我发现的最短的forms是λlex和bmargulies的例子的进一步改进。 执行标签将如下所示:
<execution> <id>TheNameOfTheRelevantExecution</id> <phase/> </execution>
2分我想强调一下:
- 阶段是没有任何东西,这看起来不像“无”,但仍然是黑客。
- ID必须与您要覆盖的执行相同。 如果你没有指定id来执行,Maven将会隐式地执行它(以一种你不直观的方式)。
发布后发现它已经在stackoverflow: 在一个Maven的多模块项目,我怎样才能禁用一个孩子的插件?