在Eclipse中调试Maven构建

51

我想使用测试来调试Eclipse构建。我尝试通过“运行”>“调试配置”>“Maven构建”来运行它。在基本目录中是我的Maven存储库目录,其中包含pom.xml文件,在目标中设置为'clean install'。当我单击调试时,Eclipse开始构建,运行测试,但不会在断点处停止。

4个回答

80
我发现最简单的方法是:
  1. 右键单击项目

  2. 调试为 -> Maven构建 ...

  3. 在目标字段中输入 -Dmaven.surefire.debug test

  4. 在参数中添加一个名为 forkCount 的新参数,并将其值设置为0(之前是forkMode=never,但已被弃用且不再起作用)

设置断点并运行此配置,它应该会命中断点。


我遇到了一个错误:“无法将[aa.properties]作为类加载器资源加载”。我正在使用ClassLoader.getSystemClassLoader().getResourceAsStream()函数来加载它。我应该设置工作目录或稍微修改一下这段代码吗? - Kangur
1
参数forkMode自2.14版本起已被弃用。请改用forkCount=0。 - Noam Manos
1
尝试在surefire 2.19、2.18和2.17中运行,但都没有成功。但在2.12.4中可以工作。是否有什么变化? - kellogs
1
我认为 #3 应该是 -Dmaven.surefire.debug=test(注意 =)? - Ternary
1
@Ternary 这就是为什么相信宗教比在电脑前更好的原因。 ;) test 是目标。-Dmaven.surefire.debug 是属性。虽然我把它写成了 test -Dmaven.surefire.debug - Gerold Broser
显示剩余4条评论

8
如果您正在使用 Maven 2.0.8+,那么很简单,只需在控制台中运行 mvndebug 命令,并通过端口 8000 连接到它即可进行远程调试 Java 应用程序。

7
问题:在使用eclipse和maven时,由于使用的库的顺序不同,单元测试结果不一致。 在我的情况下,使用maven测试成功,但我想使用eclipse调试我的单元测试, 最简单的方法是:
1)mvn -Dtest = MySuperClassTest -Dmaven.surefire.debug测试 == >它将侦听5005端口(默认端口)
2)转到eclipse,打开调试配置,添加新的java远程应用程序,并将端口更改为5005并调试
3)当然,您必须在要调试的类中的某个地方添加断点

7
你正在使用的“运行/调试配置”是为了让你在Eclipse中运行Maven,就像在命令行中一样,而不离开Eclipse。
假设你的测试基于JUnit,你应该能够通过选择包含正确测试源文件夹并选择“右键单击”->“调试为...” - >“JUnit测试”,来对它们进行调试。

1
太棒了!我正在搜索如何在Eclipse中调试Maven项目,而排名第一的链接有无数步骤,我按照那些步骤走了,可能犯了错误,但是没有成功。后来发现那篇文章是2008年的。 - Bin He

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接