2011-10-19 80 views

回答

122

下對我的作品在孩子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> 

的插件。

+5

雖然這是「正確的」,即它的工作原理,應該指出的是,它是一個未指定的(或至少_undocumented_)功能。沒有官方階段稱爲「無」。所以,你可能會把'foo'放在那裏。 –

+1

對於我在Maven 3中這不起作用。 true像bmargulies建議的作品 – mibutec

+1

我已經更新了包含Maven 3的答案。 –

38

看看插件是否有'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> 
+4

都嘗試的選擇,但他們沒有工作。 – tobiasbayer

+0

如何命名您正在使用的插件並運行help:effective-pom以查看您是否確實擁有正確的執行權。 – bmargulies

+1

也看看插件與pluginManagement。後者覆蓋前者。 – bmargulies

19

線程已舊,但也許有人仍然感興趣。 我發現的最短形式是對來自λlex和bmargulies的示例的進一步改進。該執行標籤看起來像:

<execution> 
    <id>TheNameOfTheRelevantExecution</id> 
    <phase/> 
</execution> 

2點,我想強調:

  1. 相位設置爲無,看起來比「沒有」少哈克,雖然還是黑客攻擊。
  2. ID必須與您要覆蓋的執行相同。如果你沒有指定id來執行,Maven會隱式地執行它(用你預想不到的方式)。

發佈後,發現它已經在計算器: In a Maven multi-module project, how can I disable a plugin in one child?

+1

對於記錄:默認執行ID遵循此答案中佈局的簡單規則:http://stackoverflow.com/a/34599117/7641 –

+1

值得注意的是,該解決方案實際上**禁用**(如OP要求)插件(針對給定的執行ID),而不是依賴插件特定的「跳過」選項。 – Zero3