【问题标题】:How to debug SpringBoot using Gradle commandline parameter, without suspending server?如何使用 Gradle 命令行参数调试 Spring Boot,而不暂停服务器?
【发布时间】:2020-08-30 01:28:14
【问题描述】:

我想在调试模式下使用 Gradle 启动我的 SpringBoot 应用程序(在我的机器上使用与生产环境相同的命令)

要启动我使用的服务器

$ gradle bootRun

而且我知道我可以添加一个参数以在调试模式下启动

$ gradle bootRun --debug-jvm

问题是上面的命令使服务器挂起(直到我连接调试器才启动服务器)

我可以通过将以下代码添加到 build.gradle 来获得所需的行为,但是,我想使用命令行参数,以避免错误地提交 build.gradle。

bootRun {
   jvmArgs(['-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'])
}

注意:如果我添加以下参数,我将调试 gradle 守护程序(或其他 gradle 事物),而不是我的应用程序,因此它也不是有效的解决方案:

gradle bootRun -Dorg.gradle.jvmargs="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

注意 2:以下代码不起作用 - 服务器以非调试模式启动

gradle bootRun -Dagentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

相关:how to debug spring application with gradle

【问题讨论】:

    标签: java spring-boot debugging gradle command-line


    【解决方案1】:

    您基本上是在问如何将变量传递给您的项目。

    Gradle 有 many 这样做的方法。我更喜欢project properties 方法。

    创建一个环境变量,如:

    ORG_GRADLE_PROJECT_debug_jvm=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    

    gradle.build

    bootRun {
       jvmArgs project.findProperty('debug_jvm') ?: ''
    }
    

    另见:Pass env variables to gradle.properties

    【讨论】:

    • 谢谢!已解决,使用:bootRun { if (project.hasProperty('debug')) { jvmArgs(['-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005']) } }。然后我只需要在命令行上添加 -Pdebug
    猜你喜欢
    • 2016-11-17
    • 2020-01-17
    • 2019-10-27
    • 2018-05-27
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多