在 Maven 中调试?

新手上路,请多包涵

是否可以从 Maven 启动调试器(例如 jdb)?我有一个成功编译项目的 pom.xml 文件。但是,该程序在某处挂起,我真的很想启动 jdb 或等效的调试器以查看发生了什么。

我使用 mvn compile 编译并使用以下命令启动:

 mvn exec:java -Dexec.mainClass="com.mycompany.app.App"

我期待的是这样的:

 mvn exec:jdb -Dexec.mainClass="com.mycompany.app.App"

启动调试器,但像往常一样,我的期望与 Maven 的理念不一致。

此外,我找不到任何文档(在 Maven 的网站或谷歌上)来描述调试的工作原理。我怀疑我必须使用一些插件。

原文由 aduric 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
2 个回答

正如 Brian 所说,您可以使用远程调试:

 mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 com.mycompany.app.App"

然后在您的 eclipse 中,您可以使用远程调试并将调试器附加到 localhost:1044。

原文由 Samuel Yung 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果您使用的是 Maven 2.0.8+,请运行 mvnDebug 命令代替 mvn 并在端口 8000 上附加调试器。

对于 Maven <2.0.8,取消注释 %M2_HOME%/bin/mvn.bat 中的以下行(并可能将修改后的版本保存为 mvnDebug.bat ):

 @REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

MNG-2105处理基于 Eclipse 的 IDE 中的更多详细信息。

原文由 Pascal Thivent 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题