Подтвердить что ты не робот

Как запустить Jetty через Gradle в режиме отладки

Кто-нибудь знает, как настроить плагин jetty gradle для запуска в режиме отладки, чтобы я мог подключить удаленный отладчик?

Я попытался установить gradle и java, чтобы выбрать:

-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n

... но он не работает.

Я могу настроить свою собственную установку причала, работая нормально, только не через gradle (jettyRun или jettyRunWar).

С уважением.

4b9b3361

Ответ 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

Ответ 2

Попробуйте использовать плагин Gretty, он предоставил gradle задачи jettyRunDebug, jettyStartDebug и т.д.

Исходный код и документ: https://github.com/akhikhl/gretty

Раскрытие информации: Я являюсь автором плагина Gretty.

Ответ 3

Вы используете gradle в режиме демона? Насколько я понимаю, тогда демон будет запускать экземпляр причала. Поэтому вам нужно установить аргументы JVM для демона. Это должно быть возможно, установив org.gradle.jvmargs в gradle.properties.

См. http://gradle.org/docs/current/userguide/tutorial_this_and_that.html#sec:gradle_properties_and_system_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. Когда я затем попытаюсь открыть веб-страницу, то причал сообщит мне, что я попаду в точку останова.

Ответ 4

Создайте многопроектную конструкцию 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 работает для обеих версий!

Ответ 5

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, он не работает...

Ответ 6

добавьте это в build.gradle

jettyRun {
    jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}

Ответ 7

В моих случаях это не работает, пока я не запустил следующую команду. GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun

И когда он работает, на консоли сервера я могу использовать System.out.println(...) для проверки того, что я хочу видеть. Что касается отладки точки останова, к сожалению, я не нашел для нее пути. Кто-нибудь знает, как, добро пожаловать, чтобы добавить дополнение.

Ответ 9

Я запустил его с помощью свойства 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 остановилась в первой точке останова.