2012-03-06 67 views
1

我的findBugs插件在我的Maven安裝程序中正常工作。我已經在編譯階段安裝了findbugs來執行。然而我注意到它在測試階段也運行,因爲測試階段也調用編譯。因爲我有一個可以運行所有目標的自動構建管道,所以在測試階段我不需要運行findbugs。我試圖從測試階段中排除findbugs,但是沒有運氣。Maven - FindBugs Plugin - 從測試階段中排除

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>findbugs-maven-plugin</artifactId> 
    <version>2.4.0</version> 
    <inherited>true</inherited> 
    <configuration> 
     <failOnError>${findbugs.failOnError}</failOnError> 
     <skip>${findbugs.skip}</skip> 
     <trace>${findbugs.trace}</trace> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>check</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>findbugs-test-compile</id> 
      <phase>test</phase> 
      <goals> 
       <goal>check</goal> 
      </goals> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

回答

1

它不會根據通過生命cylcle通過運行編譯它簡單地運行,因爲你配置有兩個執行一個測試,一個在編譯階段被調用。 Findbugs通常應該運行在報告區域(站點)。 只是做一個單一的執行:

<executions> 
     <execution> 
      <id>findbugs-test-compile</id> 
      <phase>test</phase> 
      <goals> 
       <goal>check</goal> 
      </goals> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
     </execution> 
    </executions> 

一個你喜歡的有。但我建議閱讀documentation因爲它應該只在報告區域(通過站點)運行。

UPDATE:
如果你喜歡只在現場發電運行FindBugs的不只是從平時的構建區域中取出並放入到報告區域來代替。

+0

我有第二個部分在測試階段運行findbugs這個問題。我添加了第二個,以便我可以將其設置爲測試階段。換句話說,如果我將第二個與測試階段一起刪除,findbugs仍然會運行,如果我發出mvn測試。 – Bellini 2012-03-07 07:32:44

+0

問題是你爲什麼要在編譯週期中運行findbugs?通常的用例是在網站生成期間運行它。簡單的問題是:什麼時候你想運行findbugs? – khmarbaise 2012-03-07 08:00:42

+0

感謝您花時間討論此問題。我想在編譯期間運行它,所以如果發現新的錯誤,構建可能會失敗。網站生成不是正常設置的一部分。如果一切正常,我只會生成網站並正確通過所有測試。請注意,我的工作不是「網站」,而是後端服務器,因此我的案例嚴格使用網站來生成項目信息和報告。 – Bellini 2012-03-07 20:18:29