2013-08-26 108 views
1

我想使用Sonar插件,只有在我的Maven配置文件中激活時纔會執行該插件。目前Sonar在每次編譯時運行。通過配置文件激活/停用sonar maven插件?

問題是,對於沒有本地安裝Sonar應用程序的其他團隊成員,構建將失敗。 pom.xml被簽入,所有團隊成員都能得到包括聲納配置在內的相同副本,但我不希望他們僅僅爲了禁用聲納(他們可能會無意中檢查其修改後的副本)而對其進行修改。

請告知如何配置Maven(.m2/settings.xml)和/或pom.xml,以便本地配置文件啓用/禁用Sonar功能。

這裏是聲納配置目前在各個項目的pom.xml:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
     <execution> 
      <id>make-sonar</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>sonar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

我的建議是不將Sonar執行附加到Maven階段,即使這是通過Maven配置文件完成的。使用聲納引發對項目的分析應直接在「聲納:聲納」命令的幫助下完成,並且這必須安排在您的ci引擎中。 –

回答

1

只包含一個Maven配置文件中的配置:

<profiles> 
    <profile> 
     <id>sonar</id> 
     <build> 
      <plugins> 
      <!-- Your Sonar config here --> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

然後啓用配置文件調用的Maven: mvn clean install -Psonar

從Maven 2.09開始,您可以根據文件的存在自動啓用插件。所以,你可以添加以下activation上述簡介:

<activation> 
    <file> 
     <exists>/full/path/to/sonar/installation</exists> 
    </file> 
</activation> 

如果絕對路徑讓你癢(像他們這樣做對我來說),exists也可以插值系統屬性。你可以快速走向太空,POM不應該知道任何有關項目建立的系統,所以要認真對待。

你的悲哀表明了一個更深層的問題:爲什麼只有看着SonarQube?軟件質量是一項共同努力,SonarQube通過在中心位置自動運行而蓬勃發展。您可能想要在CI環境中安裝SonarQube並對每個版本運行分析。然後你和你的同事可以運行SonarQube IDE在提交之前檢查你的工作。

相關問題