如何使用gradle调试spring应用程序

rig*_*gby 38 java eclipse debugging spring gradle

我正在开发spring应用程序,需要逐步执行控制器方法以查看它是如何工作的.我正在使用eclipse并使用gradle bootRun命令构建我的应用程序.

如何在调试模式下运行它?

我试过gradle bootRun --debug但它只是调试日志,而不是调试模式

我试过gradle help --task bootRun- 这给了我有关任务的信息,我看到了--debug-jvm选项但是当我运行 gradle bootRun --debug-jvm应用程序时无法启动

dan*_*rkd 52

运行后gradle bootRun --debug-jvm,应用程序将暂停,直到您将调试器连接到它正在侦听的端口(端口5005).

  • 默认情况下,调试端口是5005.如何从自定义端口开始说5006? (6认同)
  • 另外,如何开始而不暂停? (3认同)
  • 这是正确的答案,**挂起**意味着您需要单击**远程调试**按钮来连接到侦听器,然后应用程序启动:P (2认同)

rex*_*ord 24

作为对dankdirkd上面答案的回应:( 比较)

gradle bootRun --debug-jvm
Run Code Online (Sandbox Code Playgroud)

将使gradle构建在调试模式下运行.那可能不是你想要的.您想要实现的是springBoot任务以调试模式启动您的应用程序.

spring boot任务扩展了gradle JavaExec任务.您可以在build.gradle文件中配置bootRun任务,以添加如下调试配置:

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}
Run Code Online (Sandbox Code Playgroud)

对于build.gradle.kts,这将是这样的(禁用挂起模式):

tasks {
    val bootRun by getting(BootRun::class) {
        jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32323")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不相信--debug-jvm调试主要的gradle进程.bootRun进程是JavaExec的子类,它在接收--debug-jvm标志时以调试模式启动子进程.https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html#org.gradle.api.tasks.JavaExec:jvmArgs (4认同)

Cap*_*Man 7

对于通过 Google 访问此问题并想知道如何启用 Spring 的调试模式(通常由 完成java -jar app.jar --debug)并使用 Gradle 的人们,以下是如何实现的。这会传递--debug到主类,这就是您打开 Spring Boot 的调试模式的方式,该模式会记录自动配置类等。

./gradlew bootRun --args='--debug'
Run Code Online (Sandbox Code Playgroud)


小智 5

对于build.gradle.kts文件,您也可以简单地使用以下内容:

tasks.withType<BootRun> {
    jvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
}
Run Code Online (Sandbox Code Playgroud)