如何通过 Maven 使用 Netbeans 调试 Spring Boot

2022-09-03 00:43:18

在摆弄了太长时间之后,直到我在 Netbeans 8.2 和 Spring Boot 1.4.3 中得到了正确的调试设置,我想我把我的发现写成了对其他人的问答。

问题在于,Netbeans 的默认配置无法在调试模式下正确启动 Spring,当您搜索 Internet 时,您只会在 Spring 文档中找到不起作用的过时信息。

如果您知道如何操作,解决方案很简单。请在下面找到正确的设置说明。


答案 1

经过 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>

现在导航到项目设置 ->操作 ->调试项目并设置以下内容:

enter image description here

执行目标:

spring-boot:run

设置属性:

run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true

现在,通过常用的调试按钮运行应用程序,Spring 应该正确连接到 JVM 调试器。

弹簧靴 2.x

要为 Spring Boot 2.x 项目(更具体地说是 spring-boot-maven-plugin 的 2.x 版)启用 Netbeans 调试,该过程完全相同,只是属性名称已更改为:run.jvmArgumentsspring-boot.run.jvmArguments

spring-boot.run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true

答案 2

在测试 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 属性


推荐