Maven打包跳過測(cè)試的5種方式總結(jié)
前言
今天工作中遇見一個(gè)小問題,正好晚上沒什么安排,而且也很久沒寫博客了,我就想著將問題記錄一下。
平時(shí)開發(fā)時(shí)的工作的話之主要負(fù)責(zé)寫代碼就行了,什么發(fā)布項(xiàng)目啊,好吧不是我們干的事。在我們的了解中打包發(fā)布項(xiàng)目應(yīng)該不是一個(gè)困難的問題。對(duì),最簡單的方法就行使用直接使用maven插件打包,甚至我們都不需要知道他是怎么實(shí)現(xiàn)的,插件能幫我們將項(xiàng)目打包為一個(gè)jar包,然后使用java -jar xx.jar
就能運(yùn)行我們的項(xiàng)目。
我們平時(shí)使用的在開發(fā)中使用的是開發(fā)或測(cè)試的數(shù)據(jù)庫,和生產(chǎn)上面的一般是隔離的,意味著打包的時(shí)候需要激活生產(chǎn)的配置文件,但是我們不一定有訪問生產(chǎn)庫的權(quán)限,此時(shí)我們直接打包就會(huì)出現(xiàn)問題。當(dāng)我們直接點(diǎn)擊上面的package
的時(shí)候他會(huì)激活單元測(cè)試,需要測(cè)試通過以后才能打包,但是很顯然測(cè)是不能通過的,因?yàn)槲壹せ盍松a(chǎn)的配置但是我并沒有訪問上產(chǎn)庫的權(quán)限,此時(shí)就會(huì)陷入一直打包卻打不完的感覺,這就需要我們打包時(shí)跳過測(cè)試。那怎么跳過測(cè)試呢?
為什么打包時(shí)要執(zhí)行單元測(cè)試呢?【這不是我們的重點(diǎn),那我們就簡單講講,需要深入了解的自行查閱相關(guān)資料?!看藭r(shí)就涉及到 Maven 的生命周期,在 Maven 的 default 生命周期中共有 23 個(gè)階段,每個(gè)生命周期中的后面的階段會(huì)依賴于前面的階段,當(dāng)執(zhí)行某個(gè)階段的時(shí)候,會(huì)先執(zhí)行其前面的階段。在 default 生命周期中 package 階段不是第一個(gè)階段,因此也需要依賴于前面的階段的執(zhí)行,正好 test 階段【測(cè)試:使用合適的單元測(cè)試框架運(yùn)行測(cè)試(Juint是其中之一)?!烤褪瞧淝懊骐A段之一,此時(shí)就會(huì)必須先通過 test 階段才會(huì)到 package 階段【 打包:將編譯后的代碼打包成可分發(fā)格式的文件,比如JAR、WAR…】。
我們因?yàn)闆]有訪問生產(chǎn)庫的權(quán)限,此時(shí)連 test 階段都不能通過,那就不會(huì)到達(dá) package 這個(gè)階段。那有什么解決方法呢?下面我們探討一下此問題的解決方法:
1、命令行方式跳過測(cè)試
我們可以通過使用命令將項(xiàng)目打包,添加跳過測(cè)試的命令就可以了,可以用兩種命令來跳過測(cè)試:
- mvn package -DskipTests=true
- -DskipTests=true,不執(zhí)行測(cè)試用例,但編譯測(cè)試用例類生成相應(yīng)的class文件至 target/test-classes 下。
- mvn package -Dmaven.test.skip=true
- -Dmaven.test.skip=true,不執(zhí)行測(cè)試用例,也不編譯測(cè)試用例類。
在使用 mvn package
進(jìn)行編譯、打包時(shí),Maven會(huì)執(zhí)行 src/test/java
中的 JUnit 測(cè)試用例,有時(shí)為了跳過測(cè)試,會(huì)使用參數(shù) -DskipTests=true
和 -Dmaven.test.skip=true
,這兩個(gè)參數(shù)的主要區(qū)別是:
- 使用
-Dmaven.test.skip=true
,不但跳過單元測(cè)試的運(yùn)行,也跳過測(cè)試代碼的編譯; - 使用
-DskipTests=true
跳過單元測(cè)試,但是會(huì)繼續(xù)編譯。
2、pom.xml中配置跳過測(cè)試
可以在 pom.xml 中添加如下配置來跳過測(cè)試:
<build> <plugins> <!-- maven 打包時(shí)跳過測(cè)試 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
3、直接配置
Maven命令欄的工具欄有下圖中的圖標(biāo),這個(gè)圖標(biāo)就是 Skip Tests。點(diǎn)擊選中,再用 LifeStyle 中的打包就會(huì)跳過測(cè)試。注:因?yàn)槲业腎DEA是2022的版本,圖標(biāo)可能和以前的版本有些許區(qū)別,以前的版本應(yīng)該是一個(gè)藍(lán)色的圓圈里面帶一個(gè)閃電。
4、添加Maven配置參數(shù)
打開配置,找到 Build,Exxcution,Deployment –> Maven Tools –> Maven –> Runner,在 VM option 中添加 -Dmaven.test.skip=true
或者 -DskipTests=true
,就能在打包是跳過測(cè)試。
5、通過更改設(shè)置
打開配置,找到 Build,Exxcution,Deployment –> Maven Tools –> Maven –> Runner,在 Properties 中勾選 Skip Test 選項(xiàng)。
以上就是我查閱資料之后找到是幾種打包跳過測(cè)試的方式。
參考
總結(jié)
到此這篇關(guān)于Maven打包跳過測(cè)試的5種方式的文章就介紹到這了,更多相關(guān)Maven打包跳過測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot啟動(dòng)過程(五)之Springboot內(nèi)嵌Tomcat對(duì)象的start教程詳解
這篇文章主要介紹了Spring Boot啟動(dòng)過程(五)之Springboot內(nèi)嵌Tomcat對(duì)象的start的相關(guān)資料,需要的朋友可以參考下2017-04-04Spring集成Web環(huán)境與SpringMVC組件的擴(kuò)展使用詳解
這篇文章主要介紹了Spring集成Web環(huán)境與SpringMVC組件,它是一個(gè)MVC架構(gòu),用來簡化基于MVC架構(gòu)的Web應(yīng)用開發(fā)。SpringMVC最重要的就是五大組件2022-08-08SpringBoot定時(shí)調(diào)度之Timer與Quartz詳解
Java?中常用的定時(shí)調(diào)度框架有以下幾種:Timer、ScheduledExecutorService、Spring?Task和Quartz,本文主要來和大家講講他們的具體使用,需要的可以參考一下2023-06-06Guava?Retryer實(shí)現(xiàn)接口重試的示例
本文主要介紹了Guava?Retryer實(shí)現(xiàn)接口重試的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12解決springboot 多線程使用MultipartFile讀取excel文件內(nèi)容報(bào)錯(cuò)問題
這篇文章主要介紹了解決springboot 多線程使用MultipartFile讀取excel文件內(nèi)容報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09SpringBoot配置自定義攔截器實(shí)現(xiàn)過程詳解
在系統(tǒng)中經(jīng)常需要在處理用戶請(qǐng)求之前和之后執(zhí)行一些行為,例如檢測(cè)用戶的權(quán)限,或者將請(qǐng)求的信息記錄到日志中,即平時(shí)所說的"權(quán)限檢測(cè)"及"日志記錄",下面這篇文章主要給大家介紹了關(guān)于在SpringBoot項(xiàng)目中整合攔截器的相關(guān)資料,需要的朋友可以參考下2022-10-10mybatis主從表關(guān)聯(lián)查詢,返回對(duì)象帶有集合屬性解析
這篇文章主要介紹了mybatis主從表關(guān)聯(lián)查詢,返回對(duì)象帶有集合屬性解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java數(shù)據(jù)結(jié)構(gòu)之最小堆和最大堆的原理及實(shí)現(xiàn)詳解
在計(jì)算機(jī)科學(xué)中,堆(heap)?的實(shí)現(xiàn)是一種基于樹的特殊的數(shù)據(jù)結(jié)構(gòu),它可以在數(shù)組上構(gòu)建出樹的結(jié)構(gòu)體,并滿足堆的屬性。本文就來和大家詳細(xì)聊聊Java數(shù)據(jù)結(jié)構(gòu)中的堆,感興趣的可以了解一下2022-09-09