禁用在父POM中定义的Maven插件
下对我的作品在孩子POM禁用FindBugs的时候:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<executions>
<execution>
<phase>none</phase>
</execution>
</executions>
</plugin>
注意:Findbugs插件的完整定义在我们的父级/超级POM中,所以它会继承版本等。
在Maven中3,您需要使用:
<configuration>
<skip>true</skip>
</configuration>
的插件。
看看插件是否有'skip'配置参数。几乎所有人都这样做。如果这样做,只是把它添加到一个声明中的孩子:
<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>
都尝试的选择,但他们没有工作。 – tobiasbayer
如何命名您正在使用的插件并运行help:effective-pom以查看您是否确实拥有正确的执行权。 – bmargulies
也看看插件与pluginManagement。后者覆盖前者。 – bmargulies
线程已旧,但也许有人仍然感兴趣。 我发现的最短形式是对来自λlex和bmargulies的示例的进一步改进。该执行标签看起来像:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2点,我想强调:
- 相位设置为无,看起来比“没有”少哈克,虽然还是黑客攻击。
- ID必须与您要覆盖的执行相同。如果你没有指定id来执行,Maven会隐式地执行它(用你预想不到的方式)。
发布后,发现它已经在计算器: In a Maven multi-module project, how can I disable a plugin in one child?
对于记录:默认执行ID遵循此答案中布局的简单规则:http://stackoverflow.com/a/34599117/7641 –
值得注意的是,该解决方案实际上**禁用**(如OP要求)插件(针对给定的执行ID),而不是依赖插件特定的“跳过”选项。 – Zero3
虽然这是“正确的”,即它的工作原理,应该指出的是,它是一个未指定的(或至少_undocumented_)功能。没有官方阶段称为“无”。所以,你可能会把'foo'放在那里。 –
对于我在Maven 3中这不起作用。 true 像bmargulies建议的作品 –
mibutec
我已经更新了包含Maven 3的答案。 –