maven deploy plugin_学习Maven之Maven Surefire Plugin
1.maven-surefire-plugin是個(gè)什么鬼?
如果你執(zhí)行過(guò)mvn test或者執(zhí)行其他maven命令時(shí)跑了測(cè)試用例,你就已經(jīng)用過(guò)maven-surefire-plugin了。maven-surefire-plugin是maven里執(zhí)行測(cè)試用例的插件,不顯示配置就會(huì)用默認(rèn)配置。這個(gè)插件的surefire:test命令會(huì)默認(rèn)綁定maven執(zhí)行的test階段。
maven的生命周期有哪些階段?拉勾IT課小編為大家分解
[validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
2.maven-surefire-plugin的使用
如果說(shuō)maven已經(jīng)有了maven-surefire-plugin的默認(rèn)配置,我們還有必要了解maven-surefire-plugin的配置么?答案是肯定的。雖說(shuō)maven-surefire-plugin有默認(rèn)配置,但是當(dāng)需要修改一些測(cè)試執(zhí)行的策略時(shí),就有必要我們?nèi)ブ匦屡渲眠@個(gè)插件了。
2.1.配置JUnit
2.1.1.插件自動(dòng)匹配
最簡(jiǎn)單的配置方式就不配置或者是只聲明插件。
???????? org.apache.maven.plugins???????? maven-surefire-plugin???????? 2.19這個(gè)時(shí)候maven-surefire-plugin會(huì)按照如下邏輯去尋找JUnit的版本并執(zhí)行測(cè)試用例。
if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value???????? use junit47 providerif JUnit >= 4.0 is present???????? use junit4 providerelse???????? use junit3.8.12.1.2.插件手動(dòng)匹配
當(dāng)然,如果你明確用的是JUnit4.7及以上版本,可以明確聲明:
???????? org.apache.maven.plugins???????? maven-surefire-plugin???????? 2.19???????? ???????????????? ????????????????????????? org.apache.maven.surefire????????????????????????? surefire-junit47????????????????????????? 2.19???????????????? ????????JUnit4.0(含)到JUnit4.7(不含)的版本,這樣聲明:
???????? org.apache.maven.plugins???????? maven-surefire-plugin???????? 2.19???????? ???????????????? ????????????????????????? org.apache.maven.surefire????????????????????????? surefire-junit4????????????????????????? 2.19???????????????? ????????JUnit3.8(含)到JUnit4.0(不含)的版本,這樣聲明:
???????? org.apache.maven.plugins???????? maven-surefire-plugin???????? 2.19???????? ???????????????? ????????????????????????? org.apache.maven.surefire????????????????????????? surefire-junit3????????????????????????? 2.19???????????????? ????????JUnit3.8以下的版本surefire不支持。建議大家用最新的JUnit版本,目前是4.12.
???????? [...]??? ??????? junit??????? junit??????? 4.12??????? test??? ???????? [...]???????本文的例子我們用的Junit4.12.
2.2.準(zhǔn)備測(cè)試用例
我們現(xiàn)在準(zhǔn)備兩個(gè)類,一個(gè)被測(cè)試的類,一個(gè)測(cè)試用例.目錄結(jié)構(gòu)如下
現(xiàn)在我們準(zhǔn)備一個(gè)簡(jiǎn)單的類.
package com.qyf404.learn.maven;?public class App {??? public int add(int a, int b) {??????? return a + b;??? }??? public int subtract(int a, int b) {??????? return a - b;??? }}再創(chuàng)建一個(gè)測(cè)試用例.
package com.qyf404.learn.maven;?import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;?public class AppTest {??? private App app;??? @Before??? public void setUp() {??????? app = new App();??? }??? @Test??? public void testAdd() throws InterruptedException {??????? int a = 1;??????? int b = 2;??????? int result = app.add(a, b);??????? Assert.assertEquals(a + b, result);??? }??? @Test??? public void testSubtract() throws InterruptedException {???? ???int a = 1;??????? int b = 2;??????? int result = app.subtract(a, b);??????? Assert.assertEquals(a - b, result);??? }??? @After??? public void tearDown() throws Exception {??? }}2.3.用maven執(zhí)行測(cè)試用例
用maven執(zhí)行測(cè)試用例很簡(jiǎn)單,直接運(yùn)行mvn test就可以.一般我們執(zhí)行maven打包命令mvn package前maven會(huì)默認(rèn)執(zhí)行test命令.
qyfmac$ mvn test[INFO] Scanning for projects...[INFO]???????????????????????????????????????????????????????????????????????? [INFO] ------------------------------------------------------------------------[INFO] Building learn-maven 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learn-maven ---[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/main/resources[INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learn-maven ---[INFO] Changes detected - recompiling the module![WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent![INFO] Compiling 1 source file to /Users/qyfmac/git/learn-maven/target/classes[INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learn-maven ---[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/test/resources[INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learn-maven ---[INFO] Changes detected - recompiling the module![WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent![INFO] Compiling 2 source files to /Users/qyfmac/git/learn-maven/target/test-classes[INFO] [INFO] --- maven-surefire-plugin:2.19:test (default-test) @ learn-maven ---[WARNING] The parameter forkMode is deprecated since version 2.14. Use forkCount and reuseForks instead.[INFO] Surefire report directory: /Users/qyfmac/git/learn-maven/target/surefire-reports[INFO] Using configured provider org.apache.maven.surefire.junit4.JUnit4Provider?------------------------------------------------------- T E S T S-------------------------------------------------------Running com.qyf404.learn.maven.AppTestTests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in com.qyf404.learn.maven.AppTest?Results :?Tests run: 2, Failures: 0, Errors: 0, Skipped: 0?[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.622 s[INFO] Finished at: 2015-12-01T11:36:04+08:00[INFO] Final Memory: 14M/228M[INFO] ------------------------------------------------------------------------qyfmac$ ?其實(shí)我們會(huì)發(fā)現(xiàn)關(guān)鍵內(nèi)容還是JUnit的東西,maven只是作為一個(gè)調(diào)用器調(diào)用了一下這些測(cè)試用例.
3.進(jìn)階
后面讓我們來(lái)研究一下maven-surefire-plugin這個(gè)插件更多的知識(shí),這些多數(shù)都是和配置相關(guān)的.
3.1.跳過(guò)測(cè)試用例
在工作中,很多情況下我們打包是不想執(zhí)行測(cè)試用例的,可能是測(cè)試用例不完事,或是測(cè)試用例會(huì)影響數(shù)據(jù)庫(kù)數(shù)據(jù).跳過(guò)測(cè)試用例執(zhí)行過(guò)程有三個(gè)種方法.
3.1.1.在configuration中聲明
在插件的configuration配置中聲明跳過(guò)測(cè)試用例
??? org.apache.maven.plugins??? maven-surefire-plugin??? 2.19??? ??????? ??????????? org.apache.maven.surefire??????????? surefire-junit47??????????? 2.19??????? ??? ??? ??????? true???3.1.2.在properties中聲明
在properties配置中聲明跳過(guò)測(cè)試用例
??? true或
??? true3.1.3.在執(zhí)行命令中聲明
在執(zhí)行maven命令時(shí)可以聲明跳過(guò)測(cè)試用例
qyfmac$ mvn test -Dmaven.test.skip=true或
qyfmac$ mvn test -DskipTests=true3.1.4.跳過(guò)測(cè)試用例優(yōu)先級(jí)排序
首先分兩種情況,一種是配置skipTests,一種是配置maven.test.skip(真要命,聲明位置就三處了,還搞出兩個(gè)變量名,一共就是5中情況).
· 如果是配置skipTests, configuration的配置優(yōu)先級(jí)最高,命令中得配置次之, properties的配置最低.
· 即configuration > 命令 > properties
· 如果是配置maven.test.skip,命令中得配置優(yōu)先級(jí)最高, properties的配置最低.
即命令 > properties
· skipTests和maven.test.skip有一個(gè)被設(shè)置成了true,則跳過(guò)測(cè)試用例.
即skipTests||maven.test.skip決定是否跳過(guò)測(cè)試用例執(zhí)行.
3.2.maven命令執(zhí)行一個(gè)測(cè)試用例
很多情況下我們寫完一個(gè)測(cè)試用例后,想馬上運(yùn)行一下,看看執(zhí)行情況.如果用IDE開(kāi)發(fā),里面一般都有直接運(yùn)行一個(gè)測(cè)試用例的方法.但是如果用maven命令達(dá)到同樣的效果,就需要加些命令參數(shù)了.
比如我們現(xiàn)在再加一個(gè)測(cè)試用例App2Test.java.
package com.qyf404.learn.maven;?import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.JUnit4;?@RunWith(JUnit4.class)public class App2Test {??? private App app;??? @Before??? public void setUp() {??????? app = new App();??? }??? @Test??? public void testAdd() throws InterruptedException {??????? int a = 1;??????? int b = 2;??????? int result = app.add(a, b);??????? Thread.currentThread().sleep(1000);??????? Assert.assertEquals(a + b, result);??? }??? @After??? public void tearDown() throws Exception {??? }?}直接運(yùn)行 mvn test是這樣的,它執(zhí)行了全部測(cè)試用例.
qyfmac$ mvn test[INFO] Scanning for projects...[INFO]???????????????????????????????????????????????????????????????????????? [INFO] ------------------------------------------------------------------------[INFO] Building learn-maven 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------?...?------------------------------------------------------- T E S T S-------------------------------------------------------Running com.qyf404.learn.maven.App2TestTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.004 sec - in com.qyf404.learn.maven.App2TestRunning com.qyf404.learn.maven.AppTestTests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in com.qyf404.learn.maven.AppTest?Results :?Tests run: 3, Failures: 0, Errors: 0, Skipped: 0?[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.773 s[INFO] Finished at: 2015-12-01T14:57:00+08:00[INFO] Final Memory: 9M/156M[INFO] ------------------------------------------------------------------------現(xiàn)在我們用命令mvn test -Dtest=App2Test指定執(zhí)行App2Test.
qyfmac$ mvn test -Dtest=App2Test[INFO] Scanning for projects...[INFO]???????????????????????????????????????????????????????????????????????? [INFO] ------------------------------------------------------------------------[INFO] Building learn-maven 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------?...?------------------------------------------------------- T E S T S-------------------------------------------------------Running com.qyf404.learn.maven.App2TestTests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.003 sec - in com.qyf404.learn.maven.App2Test?Results :?Tests run: 1, Failures: 0, Errors: 0, Skipped: 0?[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.061 s[INFO] Finished at: 2015-12-01T14:58:59+08:00[INFO] Final Memory: 9M/156M[INFO] -------------------------------------------------------------------------Dtest的參數(shù)是可以用表達(dá)式的.
· 比如執(zhí)行多個(gè)測(cè)試用例可以用逗號(hào)分開(kāi) mvn test -Dtest=App2Test,AppTest.
· 也可以用ant風(fēng)格的路徑表達(dá)式mvn test -Dtest=*2Test,mvn test -Dtest=???2Test.
· 甚至指定具體的測(cè)試方法mvn test -Dtest=*Test#testAdd.
· 指定具體包里的測(cè)試用例mvn test -Dtest=com/qyf404/learn/maven/*.
3.3.測(cè)試用例的包含與例外配置
上面說(shuō)了,在執(zhí)行命令時(shí)可以指定執(zhí)行哪個(gè)或哪些測(cè)試用例,其實(shí)在pom.xml里也是可以配置的.
比如打包時(shí)執(zhí)行測(cè)試用例AppTest,不執(zhí)行App2Test,可以這么配置.
和里的配置方式和-Dtest后面的一樣可以配置表達(dá)式:
· 指定具體類AppTest.
· 指定具體類AppTest.java.
· 指定具體類AppTest.class.
· 指定具體類com/qyf404/learn/maven/AppTest.class.
· 指定具體類com/qyf404/learn/maven/AppTest.class,App2Test.
· 嘆號(hào)[!]表示否定!*2Test.class.
· 使用ant風(fēng)格的路徑表達(dá)式**/*Test.
· 使用ant風(fēng)格的路徑表達(dá)式**/???Test.
· 更復(fù)雜的%regex[expr]表達(dá)式%regex[com.qyf404.learn.maven.*Test.class].
· 更復(fù)雜的%regex[expr]表達(dá)式%regex[com.qyf404.*.*Test.class].
· 更復(fù)雜的%regex[expr]表達(dá)式%regex[com.qyf404.[learn|test].*Test.class],中間的方括號(hào)表示或的概念,即learn或test的情況.
· 更復(fù)雜的%regex[expr]表達(dá)式!%regex[com.qyf404.*.*2Test.class],這里面的嘆號(hào)表示否定,即包含不符合該表達(dá)式的測(cè)試用例.
· 更復(fù)雜的%regex[expr]表達(dá)式%regex[.*2Test.class],這種配置方式忽略了包前綴,可以理解成倒著匹配全類名.
· 更復(fù)雜的%regex[expr]表達(dá)式里最好不要有問(wèn)號(hào)[?],而且匹配的是類的全類名.
· 不可以指定具體方法,這種配置是錯(cuò)誤的*Test#testAdd.
· 不可以指定java文件在%regex[expr]里具體方法,這種配置是錯(cuò)誤的%regex[com.qyf404.learn.maven.*Test.java].
· 如果同時(shí)配置了和,最終執(zhí)行的測(cè)試用例是二者的交集.
3.4.分組執(zhí)行測(cè)試用例
上面我們說(shuō)了,可以配置這些信息來(lái)控制執(zhí)行哪些測(cè)試用例,但是JUnit里有個(gè)注解@Category可以對(duì)測(cè)試用例組分組標(biāo)記,而用maven執(zhí)行測(cè)試用例時(shí),我們也可以根據(jù)這個(gè)注解的標(biāo)記,來(lái)確定執(zhí)行哪組測(cè)試用例.
比如我們的測(cè)試用例是這樣的:
package com.qyf404.learn.maven;?import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.experimental.categories.Category;??public class AppTest {??? private App app;??? @Before??? public void setUp() {??????? app = new App();??? }??? @Test??? @Category(com.qyf404.learn.maven.FastTests.class)??? public void testAdd() throws InterruptedException {??????? int a = 1;??????? int b = 2;??????? int result = app.add(a, b);??????? System.out.println("---" + Thread.currentThread().getName());? ??????Assert.assertEquals(a + b, result);??? }??? @Test()??? @Category(com.qyf404.learn.maven.SlowTests.class)??? public void testSubtract() throws InterruptedException {??????? int a = 1;??????? int b = 2;??????? int result = app.subtract(a, b);? ??????System.out.println("---" + Thread.currentThread().getName());??????? Assert.assertEquals(a - b, result);??? }??? @After??? public void tearDown() throws Exception {??? }?}pom.xml里這么配置:
??? org.apache.maven.plugins??? maven-surefire-plugin??? 2.19??? ??????? com.qyf404.learn.maven.SlowTests???在執(zhí)行mvn test時(shí),則只執(zhí)行標(biāo)記@Category(com.qyf404.learn.maven.SlowTests.class)的測(cè)試用例.
3.5.若有測(cè)試執(zhí)行失敗則跳過(guò)其他測(cè)試
在打包時(shí),默認(rèn)情況會(huì)執(zhí)行全部測(cè)試用例,然后給出一個(gè)執(zhí)行的統(tǒng)計(jì)結(jié)果,如下所示:
Results :?Tests run: 3, Failures: 1, Errors: 0, Skipped: 0很多情況下我們希望測(cè)試用例沒(méi)有失敗的才能打包,如果出現(xiàn)打包失敗,需要立刻停止執(zhí)行其他測(cè)試用例.為滿足這個(gè)要求,我們需要增加一些配置設(shè)定.
??? 1里面的數(shù)字1表示當(dāng)有一個(gè)測(cè)試用例執(zhí)行失敗或發(fā)生異常時(shí),跳過(guò)后續(xù)的其他測(cè)試用例.這個(gè)數(shù)字其實(shí)只要是一個(gè)大于零的數(shù)就可以.表達(dá)的意思就是當(dāng)有N個(gè)測(cè)試用例執(zhí)行失敗或異常時(shí),跳過(guò)后續(xù)的其他測(cè)試用例.
3.6.重新運(yùn)行失敗的測(cè)試用例
當(dāng)我們的一個(gè)測(cè)試用例測(cè)試的是一個(gè)遠(yuǎn)程服務(wù),在某些情況下可能由于環(huán)境問(wèn)題(比如網(wǎng)絡(luò))導(dǎo)致測(cè)試用例執(zhí)行失敗,但這并不是程序問(wèn)題.換句話說(shuō),當(dāng)一個(gè)測(cè)試用例執(zhí)行N次,有一次執(zhí)行成功就認(rèn)為成功.這個(gè)時(shí)候我們就需要配置一個(gè)參數(shù),運(yùn)行執(zhí)行失敗的此時(shí)用例重新執(zhí)行.
??? 2里面的數(shù)字2表示當(dāng)某個(gè)測(cè)試用例執(zhí)行失敗以后,還可以重新執(zhí)行2次,有一次執(zhí)行成功就認(rèn)為測(cè)試用例執(zhí)行成功.里面的2只要是一個(gè)大于零的整數(shù)就可以,表示重試次數(shù).如果發(fā)生重試,在maven的執(zhí)行報(bào)告中會(huì)多一個(gè)Flakes.
------------------------------------------------------- T E S T S-------------------------------------------------------Running com.qyf404.learn.maven.App2TestTests run: 3, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 3.023 sec <<< FAILURE! - in com.qyf404.learn.maven.App2TesttestAdd(com.qyf404.learn.maven.App2Test)? Time elapsed: 1.012 sec? <<< FAILURE!java.lang.AssertionError: expected:<2> but was:<3>??????? at com.qyf404.learn.maven.App2Test.testAdd(App2Test.java:32)?testAdd(com.qyf404.learn.maven.App2Test)? Time elapsed: 1.006 sec? <<< FAILURE!java.lang.AssertionError: expected:<2> but was:<3>??????? at com.qyf404.learn.maven.App2Test.testAdd(App2Test.java:32)?Running com.qyf404.learn.maven.AppTestTests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in com.qyf404.learn.maven.AppTest?Results :?Flaked tests: com.qyf404.learn.maven.App2Test.testAdd(com.qyf404.learn.maven.App2Test)? Run 1: App2Test.testAdd:32 expected:<2> but was:<3>? Run 2: App2Test.testAdd:32 expected:<2> but was:<3>? Run 3: PASS??Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Flakes: 13.7.Debugging Tests
一般情況我們可以在IDE中直接執(zhí)行測(cè)試用例,有時(shí)候會(huì)出現(xiàn)這種情況,IED中直接執(zhí)行測(cè)試用例是沒(méi)問(wèn)題的,但是用maven命令打包時(shí)就執(zhí)行失敗了.我們可以在命令中加入-X或--debug來(lái)打印更多的日志信息來(lái)排查問(wèn)題.但也可以開(kāi)啟JVM的調(diào)試端口來(lái)遠(yuǎn)程debug.
3.7.1.以調(diào)試模式執(zhí)行maven命令
執(zhí)行maven命令mvn -Dmaven.surefire.debug test以開(kāi)啟調(diào)試模式.當(dāng)然也可以用完整的命令來(lái)指定端口
mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -Xnoagent -Djava.compiler=NONE" test命令執(zhí)行后是這個(gè)樣子:
qyfmac$ mvn -Dmaven.surefire.debug test[INFO] Scanning for projects...[INFO]???????????????????????????????????????????????????????????????????????? [INFO] ------------------------------------------------------------------------[INFO] Building learn-maven 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learn-maven ---[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/main/resources[INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learn-maven ---[INFO] Nothing to compile - all classes are up to date[INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learn-maven ---[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/test/resources[INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learn-maven ---[INFO] Nothing to compile - all classes are up to date[INFO] [INFO] --- maven-surefire-plugin:2.19:test (default-test) @ learn-maven ---?------------------------------------------------------- T E S T S-------------------------------------------------------Listening for transport dt_socket at address: 5005?后面我們就需要根據(jù)這個(gè)5005端口去啟動(dòng)本地源碼了.
3.7.2.使用IDE遠(yuǎn)程調(diào)試
開(kāi)始調(diào)試前需要先配置IDE,我以idea為例說(shuō)明如何配置.
3.8.并發(fā)執(zhí)行測(cè)試用例
如果測(cè)試用例很多,而且并行執(zhí)行時(shí)不會(huì)互相影響,這時(shí)我們可以配置一個(gè)線程數(shù)來(lái)加快測(cè)試用例的執(zhí)行效率.
???????? org.apache.maven.plugins???????? maven-surefire-plugin???????? 2.19???????? ???????????????? methods???????????????? 10????????3.9.查看測(cè)試報(bào)告
在執(zhí)行完mvn test后,會(huì)在target目錄下生成測(cè)試報(bào)告
一共兩個(gè)文件,txt文件記錄了匯總信息,xml文件里記錄了測(cè)試用例執(zhí)行的環(huán)境和執(zhí)行情況,而且方便程序解析展現(xiàn).
txt文件內(nèi)容:
-------------------------------------------------------------------------------Test set: com.qyf404.learn.maven.AppTest-------------------------------------------------------------------------------Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in com.qyf404.learn.maven.AppTestxml文件內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?>? ??? ??? ??? ??? ??? ...? ?結(jié)語(yǔ)
寫了這么多,基本上把maven-surefire-plugin這個(gè)插件常用的都介紹了.但是maven-surefire-plugin沒(méi)介紹的遠(yuǎn)比這些多,看看它的配置項(xiàng)就知道了.
總結(jié)
以上是生活随笔為你收集整理的maven deploy plugin_学习Maven之Maven Surefire Plugin的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: filter过滤器_不了解布隆过滤器?一
- 下一篇: python中常用的序列化模块_Pyth