如何通过 Maven 使用 Netbeans 调试 Spring Boot
在摆弄了太长时间之后,直到我在 Netbeans 8.2 和 Spring Boot 1.4.3 中得到了正确的调试设置,我想我把我的发现写成了对其他人的问答。
问题在于,Netbeans 的默认配置无法在调试模式下正确启动 Spring,当您搜索 Internet 时,您只会在 Spring 文档中找到不起作用的过时信息。
如果您知道如何操作,解决方案很简单。请在下面找到正确的设置说明。
在摆弄了太长时间之后,直到我在 Netbeans 8.2 和 Spring Boot 1.4.3 中得到了正确的调试设置,我想我把我的发现写成了对其他人的问答。
问题在于,Netbeans 的默认配置无法在调试模式下正确启动 Spring,当您搜索 Internet 时,您只会在 Spring 文档中找到不起作用的过时信息。
如果您知道如何操作,解决方案很简单。请在下面找到正确的设置说明。
经过 Netbeans 8.2 和 Spring-Boot 1.4.3 测试和使用:
首先,请确保您包含了Spring Maven插件(在制作新的Netbeans Spring项目时,应该已经包含了这个插件):
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
此外,包含这样的Spring Devtools也是一个好主意:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
...
</dependencies>
现在导航到项目设置 ->操作 ->调试项目并设置以下内容:
执行目标:
spring-boot:run
设置属性:
run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true
现在,通过常用的调试按钮运行应用程序,Spring 应该正确连接到 JVM 调试器。
要为 Spring Boot 2.x 项目(更具体地说是 spring-boot-maven-plugin 的 2.x 版)启用 Netbeans 调试,该过程完全相同,只是属性名称已更改为:run.jvmArguments
spring-boot.run.jvmArguments
spring-boot.run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true
在测试 NetBeans 8.2 和 Spring Boot 2.0.1 时,我无法按照@TwoThe的说明使工作正常。首先,我遇到了一个问题,我看到的只是“JPDA Listening Start...”在输出窗口中。为了解决这个问题,我添加了Spring Devtools作为可选依赖项。其次,即使调试看起来运行正常,“调试”窗口(通常显示活动线程列表)为空,并且不会触发我设置的断点。第三,尝试通过按红色的“完成调试器会话”按钮来停止调试会话不会停止 Tomcat 服务器。
我发现使用默认的“调试项目”操作执行目标就足够了,而不是将执行目标更改为“spring-boot:run”:
process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec
..和属性:
exec.args=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath ${packageClassName} exec.executable=java jpda.listen=true
(顺便说一句,作为常规 Java 应用程序进行调试显然是在 Eclipse 中调试 Spring Boot 应用程序的推荐方法;请参阅如何使用 Eclipse 调试 Spring Boot 应用程序?)
一个有用的提示是,如果要使用某个Spring Boot配置文件进行调试,例如“debug”,则可以在“exec.args”属性之前附加“-Dspring.profiles.active=debug”。另请参见:运行完全可执行 JAR 的 Spring 引导并指定 -D 属性