现在的位置: 首页 > 综合 > 正文

maven环境下debug代码

2013年03月20日 ⁄ 综合 ⁄ 共 1152字 ⁄ 字号 评论关闭

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,连接到命令行即可

抱歉!评论已关闭.