Maven的生命周期
clean、resources、compile、testResources、testCompile、test(測試,打包時跳過)、jar(打包)、install(發布到本地庫)、deploy(發布到遠程庫)
package命令完成了項目編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
install命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫,但沒有布署到遠程maven私服倉庫
deploy命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
使用Maven打包的時候,可能會因為單元測試打包失敗,這時候就需要跳過單元測試。
Maven跳過單元測試有三種方法。
依賴范圍說明
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
依賴范圍(Scope) | 對主代碼classpath有效 | 對測試代碼classpath有效 | 被打包,對運行時classpath有效 | 例子 |
compile | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | - | Y | JDBC Driver |
一、命令行方式跳過測試
我們可以用兩種命令來跳過測試
- mvn clean install -DskipTests
- mvn clean install -Dmaven.test.skip=true
- DskipTests,不執行測試用例,但編譯測試用例類生成相應的class文件至target/test-classes下
- Dmaven.test.skip=true,不執行測試用例,也不編譯測試用例類
使用maven.test.skip,不但跳過單元測試的運行,也跳過測試代碼的編譯;
使用 mvn package -DskipTests 跳過單元測試,但是會繼續編譯。
二、pom.xml中配置跳過測試
可以在pom.xml中添加如下配置來跳過測試:
<build> <plugins> <!-- maven 打包時跳過測試 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> <build>
三、Idea中配置跳過測試
Idea是我們常用的開發工具,我們經常直接用Idea的插件來進行打包。我們可以通過配置來跳過測試。
1、直接配置
Maven命令欄的工具欄有下圖中的圖標,這個圖標就是 Skip Tests。點擊選中,再用LifeStyle中的打包就會跳過測試.
2、更改Maven配置
- 方式1:打開配置,找到Maven-->Runner,在VM option中添加 -Dmaven.test.skip=true
- 方式2:Runner--> Propertis 中選中 Skip tests