溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven 參數(shù)(maven.test.skip 和 maven.test.skip.exec) 區(qū)別

發(fā)布時間:2020-06-08 01:25:48 來源:網(wǎng)絡 閱讀:965 作者:charles_wang888 欄目:軟件技術

 Part 1原因在于我們參數(shù)的差異:

 

情況1 mvn clean install -Dmaven.test.skip=true

這種情況,即不編譯測試類文件,也不執(zhí)行測試類文件

 

情況2mvn clean install –Dmaven.test.skip.exec=true

這種情況,編譯測試類文件成字節(jié)碼文件,但是不執(zhí)行字節(jié)碼文件

 

 

由于以前大家都沒寫單元測試,所以沒問題,現(xiàn)在有單元測試進來了,于是問題來了。

 

 

----分界線----

 

第一種情況下,(也就是出錯的情況),我們maven3(基于JDK 1.6 不編譯這些,所以一直運行到build successful ,沒問題。

然后。。(關鍵來了)執(zhí)行sonar,因為我們Jenkins版本非常低,只能接受sonar2.0,而sonar 2.0(基于JDK 1.5)在執(zhí)行生命周期時 maven-compiler-plugin:2.3.2:testCompile時候,他發(fā)現(xiàn)沒有編譯那些類,所以他用jdk 1.5編譯測試類,而我們源代碼是1.6的源碼,他沒能力編譯這些,所以編譯不通過。



Maven 參數(shù)(maven.test.skip 和 maven.test.skip.exec) 區(qū)別

 

 

第二種情況, 我們maven3(基于JDK 1.6) 編譯這些類,所以在target目錄下生成了 1.6版本的字節(jié)碼,但是不運行他們。一切都很順利,然后到了sonar了,同樣會調(diào)用compiler-plugin:2.3.2:testCompile ,(關鍵來了),此時他比較一下時間戳,發(fā)現(xiàn)是已經(jīng)有最新的字節(jié)碼了(maven3 使用JDK 1.6來編譯的),所以,他就跳過了testCompile階段,所以沒問題了。

 

 

 

 

Part 2:解決辦法

 

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

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


Maven 參數(shù)(maven.test.skip 和 maven.test.skip.exec) 區(qū)別

 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI