Maven 參數(maven.test.skip 和 maven.test.skip.exec) 區別

 Part 1緣由在於咱們參數的差別:maven

 

狀況1 mvn clean install -Dmaven.test.skip=trueide

這種狀況,即不編譯測試類文件,也不執行測試類文件單元測試

 

狀況2mvn clean install –Dmaven.test.skip.exec=true測試

這種狀況,編譯測試類文件成字節碼文件,可是不執行字節碼文件ui

 

 

因爲之前你們都沒寫單元測試,因此沒問題,如今有單元測試進來了,因而問題來了。spa

 

 

----分界線----orm

 

第一種狀況下,(也就是出錯的狀況),咱們maven3(基於JDK 1.6 不編譯這些,因此一直運行到build successful ,沒問題。blog

而後。。(關鍵來了)執行sonar,由於咱們Jenkins版本很是低,只能接受sonar2.0,而sonar 2.0(基於JDK 1.5)在執行生命週期時 maven-compiler-plugin:2.3.2:testCompile時候,他發現沒有編譯那些類,因此他用jdk 1.5編譯測試類,而咱們源代碼是1.6的源碼,他沒能力編譯這些,因此編譯不經過。生命週期



 

 

第二種狀況, 咱們maven3(基於JDK 1.6) 編譯這些類,因此在target目錄下生成了 1.6版本的字節碼,可是不運行他們。一切都很順利,而後到了sonar了,一樣會調用compiler-plugin:2.3.2:testCompile ,(關鍵來了),此時他比較一下時間戳,發現是已經有最新的字節碼了(maven3 使用JDK 1.6來編譯的),因此,他就跳過了testCompile階段,因此沒問題了。ip

 

 

 

 

Part 2:解決辦法

 

一個辦法就是把參數弄成Dmaven.test.skip.exec 但這不是最好的方法

最好的方法是,讓sonarsource version target version設置爲1.6,而不是默認的1.5


相關文章
相關標籤/搜索