Ответ 1
В Linux:
export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n"
gradle jettyRun
В Windows:
set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
gradle jettyRun
Кто-нибудь знает, как настроить плагин jetty gradle для запуска в режиме отладки, чтобы я мог подключить удаленный отладчик?
Я попытался установить gradle и java, чтобы выбрать:
-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
... но он не работает.
Я могу настроить свою собственную установку причала, работая нормально, только не через gradle (jettyRun или jettyRunWar).
С уважением.
В Linux:
export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n"
gradle jettyRun
В Windows:
set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
gradle jettyRun
Попробуйте использовать плагин Gretty, он предоставил gradle задачи jettyRunDebug, jettyStartDebug и т.д.
Исходный код и документ: https://github.com/akhikhl/gretty
Раскрытие информации: Я являюсь автором плагина Gretty.
Вы используете gradle в режиме демона? Насколько я понимаю, тогда демон будет запускать экземпляр причала. Поэтому вам нужно установить аргументы JVM для демона. Это должно быть возможно, установив org.gradle.jvmargs в gradle.properties.
Просто проект, который работает здесь в режиме без демона
build.gradle:
apply plugin: 'idea'
apply plugin: 'jetty'
SRC/главная/Java/COM/Test.java:
package com;
public class Test {
static public String greet() {
return "Hi";
}
}
SRC/Основной/WebApp/index.jsp:
<%@ page import="com.Test" %>
<html><body>
<%= Test.greet() %>
</body></html>
Командная строка (в cygwin хотя):
$ GRADLE_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n' gradle jettyRun
Gradle затем зависает, и я могу поместить отладчик из Intellij на порт 9999 и установить контрольную точку в файле java. Когда я затем попытаюсь открыть веб-страницу, то причал сообщит мне, что я попаду в точку останова.
Создайте многопроектную конструкцию gradle и я попробовал:
$ export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,suspend=y,server=y"
$ gradle jettyRun
И это НЕ работало. Я даже попытался добавить -Xnoagent в настройку GRADLE_OPTS выше, но это тоже не имело значения. Кроме того, установка JAVA_OPTS вместо GRADLE_OPTS также не решила проблему. Для меня проблема заключалась в добавлении gradle.properties:
org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y
И сразу я смог попасть в точку останова. Возможно, решения, упомянутые в других ответах, не работают для меня, потому что это многопроектная сборка. Не уверен!
Просто хотел предоставить решение, которое сработало для меня в случае, если выше решения не работают для других людей.
P.S: Пробовал с помощью gradle 1.5/1.6 и добавил настройку выше к gradle.properties работает для обеих версий!
set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
НЕ работает для меня тоже при запуске с gradle jettyRunWar
.
Я нашел другое решение, которое работает, запустите gradle jettyRunWar с нижеуказанными параметрами
gradle -Dorg.gradle.jvmargs="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" jettyRunWar
.
Но когда я добавляю тот же параметр в gradle.properties, он не работает...
добавьте это в build.gradle
jettyRun {
jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
В моих случаях это не работает, пока я не запустил следующую команду.
GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun
И когда он работает, на консоли сервера я могу использовать System.out.println(...)
для проверки того, что я хочу видеть. Что касается отладки точки останова, к сожалению, я не нашел для нее пути. Кто-нибудь знает, как, добро пожаловать, чтобы добавить дополнение.
Кроме того, посмотрите на две ссылки из официальной вики:
https://github.com/akhikhl/gretty/issues/36
http://akhikhl.github.io/gretty-doc/Debugger-support.html
Он может помочь вам правильно настроить плагин gretty для отладки приложения причала с помощью IntelliJ Idea
Я запустил его с помощью свойства org.gradle.debug
:
./gradlew -Dorg.gradle.debug=true jettyRun
В этот момент gradle зависает и ожидает входящих отладочных соединений.
Затем я создал конфигурацию удаленного запуска в IntelliJ со значением "аргументы командной строки для запуска удаленной JVM"
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Наконец, я запустил эту новую конфигурацию, gradle возобновил ход, а среда IDE остановилась в первой точке останова.