2011-09-20 89 views
6

我有我的詹金斯的工作如下配置: 首先清理並生成Maven項目,然後運行單元測試和靜態分析:clean install sonar:sonar 問題是installsonar:sonar各跑了單元測試,從而有效地增加了一倍構建時間。如何在運行「maven clean install」和Sonar時只運行一次單元測試?

我通過改變clean install sonar:sonarclean install -DskipTests並使用Jenkins sonar插件運行Sonar來解決此問題。現在單元測試只運行一次,聲納顯示結果,但詹金斯不知道測試了。

我的猜測是詹金斯只在構建後看到surefire-reports文件夾,而不是在Sonar之後(這是後期製作操作)。

回答

11

您可以先運行clean install -DskipTests,然後添加第二個maven構建步驟sonar:sonar。 測試(和完整的聲吶分析)將在構建階段運行,然後由詹金斯收集肯定的結果。

2

正如您所說,Sonar是一個後編譯步驟。 Sonar要求構建完成並在其可以運行之前通過所有測試,否則它所做的事情沒有任何意義。

聲吶通過儀器運行測試(如果我沒有記錯的話,可以使用cobertura),它給出了測試的代碼覆蓋率。

因此,在Sonar運行之前,您需要安裝(或至少編譯&測試),然後Sonar重新運行測試,以達到自己的目的。