在 Maven 中调试?

2022-08-31 12:12:52

是否可以从 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的网站或谷歌上)来描述调试的工作原理。我怀疑我必须使用一些插件。


答案 1

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

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

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

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


答案 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。