Как отлаживать приложение spring с помощью gradle

Я работаю над приложением spring и вам нужно пройти через контроллер, чтобы увидеть, как он работает. Я работаю в eclipse и создаю свое приложение с помощью команды gradle bootRun.

Как запустить его в режиме отладки?

Я попробовал gradle bootRun --debug, но он просто отлаживал журнал, а не режим отладки

Я попробовал gradle help --task bootRun - это дает мне информацию о задаче там я видел вариант --debug-jvm, но когда я запускаю gradle bootRun --debug-jvm приложение не запускается

Ответ 1

После запуска gradle bootRun --debug-jvm приложение приостанавливается, пока вы не подключите ваш отладчик к порту, который он прослушивает (порт 5005).

Ответ 2

В ответ на dankdirkd ответ выше: (сравнить)

gradle bootRun --debug-jvm

сделает сборку Gradle в режиме отладки. Это, вероятно, не то, что вы хотите. Чего вы хотите добиться, так это того, чтобы задача springBoot запускала ваше приложение в режиме отладки.

Задача весенней загрузки расширяет стандартную задачу JavaExec. Вы можете настроить задачу bootRun в вашем файле build.gradle, чтобы добавить конфигурацию отладки следующим образом:

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}

Для build.gradle.kts это будет выглядеть так (с отключенным режимом ожидания):

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

Если ваш сервер находится в облаке и вы хотите выполнять отладку с локального компьютера, вам необходимо убедиться, что он разрешает подключения извне. Используйте конфигурацию ниже в этом случае

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

Обратите внимание, что адрес теперь 0.0.0.0:port вместо просто port

Ответ 3

Определите исполняемое приложение Java в дочернем процессе.

task executeApp() {
    doFirst {
       println "Executing java app from Gradle..."
       javaexec {
           main = "com.mymain"
           jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=30000"]
       }
    }
}

Установите свои точки останова в коде Java. После выполнения задачи Gradle. Например, в Windows:

  .\gradlew.bat executeApp

Задача ждет, пока вы не подключите отладчик. Например, в Netbeans перейдите в Debug-> Attach debugger, установите 30000 в поле Field.