在Maven2中運行單個測試用例并添加JVM參數
都說Maven2是Ant的替代品,今天稍微使用了下Maven,記錄備忘。
通過Maven單獨運行一個Junit測試用例(無需配置surefire):
mvn -Dtest=TestXXX test
為Maven運行添加JVM參數,比如想給運行Maven的JVM分配更多內存,或者進行profiling等。有兩種方法,一種是全局方法,即設置一個全局的環境變量MAVEN_OPTS。
linux下可修改.profile或者.bash_profile文件:export MAVEN_OPTS=-Xmx1024m
windows下可以添加環境變量MAVEN_OPTS
這樣對于所有的maven進程都會啟用這個JVM參數,所以是一個全局變量,具體可在bin\mvn.bat或者mvn.sh文件中找到如下內容:(%MAVEN_OPTS%即為全局JVM參數)
@REM Start MAVEN2
:runm2
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" org.codehaus.classworlds.Launcher %MAVEN_CMD_LINE_ARGS%
如果有更加specific的需求,比如要單獨運行一個JUnit Testcase,并且要fork出一個新的JVM來運行,還要為這個JVM加上特定的參數,那就需要更改項目的pom.xml文件了。具體方法是,修改項目的pom.xml在<build>-><plugins>,添加一個plugin,目的是配置surefire,使得每運行一個testcase,都單獨fork出一個新的JVM來運行,若還要添加JVM參數,則可通過maven.test.jvmargs來進行傳遞:
<plugin> |
然后在<properties>標簽下加入,這樣maven能夠知道maven.test.jvmargs這個參數存在,默認值為空,通過運行時命令行傳入:
<deploy.target/> <maven.test.jvmargs></maven.test.jvmargs> |
最后通過如下命令來運行,其中-Dtest是需要運行的testcase的名稱,-Dmaven.test.jvmargs指需要傳入的JVM參數,maven將這個參數傳給新的fork出來的JVM運行。
mvn -Dtest=TestXXX -Dmaven.test.jvmargs='-agentlib:xxxagent -Xmx128m' test