Это небольшая статья для тех, кто является основной IDE — Eclipse для разработки приложений или плагинов Grails 3 — и все еще задается вопросом, как отлаживать их приложения.
Прежде всего, чтобы уточнить: в настоящее время нет отладки «Grails», это только Spring Boot и Gradle с Grails 3. Любой способ отладки таких приложений позволяет отлаживать приложение Grails 3.
По этой теме написано множество SO-сообщений и обращений Google, поэтому я создаю этот пост также в качестве краткого резюме «самого простого решения» для себя и для других.
В нескольких версиях Eclipse плагин Eclipse Buildship поставляется вместе, по крайней мере, в обычном Java-пакете, что позволяет мне многое делать с Gradle, который лежит в основе Grails 3, изнутри IDE. bootRun
с выполнением любой задачи Gradle, такой как bootRun
в моих приложениях Grails 3, было бы очень полезно, если бы я мог также использовать Buildship для отладки .
Что ж, на момент написания статьи такого еще не было: уже с 2015 года отладка веб-приложения с помощью Buildship включена в план. Вы можете запустить Gradle, но пока не можете отлаживать его.
Итак, простой способ отладки: удаленная возможность отладки Java-приложений Eclipse + Gradle в режиме отладки .
Пробовал со свежим приложением Grails 3.2.7 hello-world. (В MacOS с использованием Oracle JDK 8 с Eclipse Oygen (4.7) — но это менее важно)
Всего 2 шага:
- Запустите JVM в режиме отладки с помощью
./gradlew bootRun --debug-jvm
- В Eclipse создайте конфигурацию удаленного запуска приложения Java, подключаясь к более ранней JVM
Использование gradle bootRun --no-daemon -Dorg.gradle.debug=true
позволило Eclipse подключиться в режиме отладки, но Eclipse не остановился ни на одной из точек останова.
Примером
Примите чистое приложение Grails 3.2.7.
Добавьте строку в BootStrap.groovy
и установите для нее BootStrap.groovy
останова :
Запустите приложение в режиме отладки с помощью оболочки Gradle (или внешнего Gradle) с параметром --debug-jvm
.
01
02
03
04
05
06
07
08
09
10
11
12
|
localhost:hello-world tvinke$ . /gradlew bootRun --debug-jvm Starting a Gradle Daemon (subsequent builds will be faster) :compileJava NO-SOURCE :compileGroovy :buildProperties UP-TO-DATE :processResources :classes :findMainClass :bootRun objc[12520]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1 .8.0_121.jdk /Contents/Home/bin/java (0x1041d24c0) and /Library/Java/JavaVirtualMachines/jdk1 .8.0_121.jdk /Contents/Home/jre/lib/libinstrument .dylib (0x10429a4e0). One of the two will be used. Which one is undefined. Listening for transport dt_socket at address: 5005 > Building 85% > :bootRun |
В этот момент приложение останавливается , заявляя, что прослушивает порт 5005, и не будет продолжаться (по замыслу), пока не будет подключен отладчик.
Создайте в Eclipse конфигурацию отладки (в разделе « Настройка отладки» добавьте запись удаленного приложения Java ), оставив значение по умолчанию для localhost , но измените порт на 5005.
Подключите Eclipse к ожидающей JVM и начните отладку с помощью кнопки Debug .
Приложение продолжает запуск. И на самом деле останавливается на нашей точке останова .
Будущая поддержка отладки с Eclipse Buildship
Eclipse Oxygen в настоящее время поставляется с версией Buildship 2.0. Когда Buildship получит обновление, которое сделает возможной отладку Gradle из среды IDE ? В билете Bugzilla , который был перенесен в более новую проблему # 249 GitHub , нет планов получения опции «Отладка как…» в Eclipse, как и в обычных приложениях Java.
Как говорит один из разработчиков:
Добавление удобства для этого, конечно, было бы замечательно, но есть и другие вещи, которые являются более важными, такие как поддержка составной сборки, поддержка Kotlin, наличие правильного пути к классу времени выполнения и т. Д.
Есть ли другие способы в Eclipse?
Некоторые пытались установить Spring IDE Core в Eclipse Mars с сайта обновлений Spring и отлаживать приложение Grails в качестве конфигурации Spring Boot App — но я больше не мог этого делать в Eclipse Oxygen. Отсутствие / отсутствие зависимости останавливает все это.
Конечно, есть и другие способы использования Eclipse (возможно, с использованием других интеграций Gradle), и если вы найдете способ, пожалуйста, дайте мне знать!
Ссылка: | Отладка Grails 3, Spring Boot или Gradle с Eclipse от нашего партнера по JCG Теда Винке в блоге |