? 眾所周知,idea的maven插件上方,有一個“閃電”樣式的按鈕,網上介紹是:該按鈕保持按下狀態時,編譯代碼時就不會自動執行單元測驗,
? 不過不知道為什么,我們專案編譯時,即使選中這個按鈕,還是會執行單元測驗,導致編譯時間非常久,所以之前每次編譯時,需要在終端里面手工執行maven,加上-Dmaven.test.skip=true引數才行,
? 之前由于專案緊張,就沒仔細思考原因,直到最近專案進度相對理想,有了一些空閑時間,于是開始研究這個問題,
1 首先我在idea設定里面,把maven日志級別改成debug,這樣編譯時就能輸出更多資訊
2 通過debug日志分析,我發現選中“閃電”按鈕,idea編譯時,是給代碼增加一個-DskipTests=true的引數,
網上查了一下maven.test.skip跟skipTests兩個引數區別,是這樣說的:
-DskipTests,不執行測驗用例,但編譯測驗用例類生成相應的class檔案至target/test-classes下,
-Dmaven.test.skip=true,不執行測驗用例,也不編譯測驗用例類,
3 從網上文章上看,加了這兩個引數maven都不會執行單元測驗,但實際上在我們專案里面skipTests引數是無效的,
4 于是我猜測,是不是有其它地方配置了skipTests引數,覆寫了命令列的引數值,
于是全域搜索專案,發現在pom里面有這樣的配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
5 猜測是由于這個引數引導起的例外,嘗試把引數洗掉,發現“閃電”按鈕現在可以生效了,猜測組態檔里面引數優先級高于命令列的(這優先級跟sptring-boot的不一樣,spring-boot是命令列引數最大)
6 后來又再網上找了一下,找到一篇完整介紹maven單元測驗功能的文章,里面有一行說明文字,也映證了我的猜測: “配置skipTests, configuration的配置優先級最高,命令中得配置次之, properties的配置最低”
我這里參考一下原文:
https://www.cnblogs.com/qyf404/p/5013694.html
3.1.3.在執行命令中宣告
在執行maven命令時可以宣告跳過測驗用例
qyfmac$ mvn test -Dmaven.test.skip=true
或
qyfmac$ mvn test -DskipTests=true
3.1.4.跳過測驗用例優先級排序
首先分兩種情況,一種是配置skipTests,一種是配置maven.test.skip(真要命,宣告位置就三處了,還搞出兩個變數名,一共就是5種情況).
- 如果是配置
skipTests, configuration的配置優先級最高,命令中得配置次之, properties的配置最低. - 即
configuration > 命令 > properties - 如果是配置
maven.test.skip,命令中得配置優先級最高, properties的配置最低.
即命令 > properties skipTests和maven.test.skip有一個被設定成了true,則跳過測驗用例.
即skipTests||maven.test.skip決定是否跳過測驗用例執行.
7 總結一下這個問題解決思路:
a 查看正常與例外日志,對比差異
b 根據差異內容,百度查找相關資訊
c 問題修復后,最好將修改還原,看是否能復現問題,(有助于分清故障出現的充分條件和必要條件)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/218406.html
標籤:Java
上一篇:Pr:視頻防抖效果
下一篇:書城專案:第5階段
