1、debug maven unit test
远程debug maven unit testcase,适用场景:
- 远程跟踪调试服务器上某个单测。
- 某些情况开发工具不能正常加载单测代码我的intellij idea因为单测执行之前要等待大量的diamond推送导致,所有单测都执行失败,需要在命令行执行才可以。
使用新版的maven-surefire-plugin,支持执行某个单测方法:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
...
</plugins>
在工程的${basedir}的命令中执行:
mvn test -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE" -Dtest=com.taobao.service.SomeServiceTest#someMethod
为了方便可以将-Dmaven.surefire.debug="-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787 -Xnoagent -Djava.compiler=NONE"
设置为环境变量,例如MAVEN_DEBUG_TEST,执行单测就比较方便了:maven
test ${MAVEN_DEBUG_TEST} -Dtest=com.taobao.service.SomeServiceTest#someMethod
在ide中配置remote debug,连接上当前case就行了。
2、debug maven plugin
在开发maven plugin的时候,最不舒服的地方是查询plugin代码逻辑中的bug。每次都要install本地,通过log或者debug的方式来确认代码是否正确。 debug plugin的代码比较方便,需要通过remote debug的方式:
- 将plugin install到本地repository中,然后通过mvnDebug 的方式执行plugin
- 命令行处于debug listening状态,在ide中配置remote debug,连接到命令行即可