Как запустить Jetty через Gradle в режиме отладки - PullRequest
35 голосов
/ 16 февраля 2012

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

Я пытался установить параметры gradle и java:

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

... но, похоже, это не работает.

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

Привет.

Ответы [ 9 ]

46 голосов
/ 10 марта 2012

В 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
17 голосов
/ 05 мая 2014

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

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

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

5 голосов
/ 07 августа 2013

Мой мультипроектный билд, и я попробовал:

$ 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 голосов
/ 17 февраля 2012

Работаете ли вы с 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. Когда я попытаюсь открыть веб-страницу, пристань сообщает мне, что я достигну точки останова.

3 голосов
/ 03 февраля 2015

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

2 голосов
/ 14 июля 2016

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

jettyRun {
    jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
0 голосов
/ 24 июня 2016

Я запустил его со свойством org.gradle.debug:

./gradlew -Dorg.gradle.debug=true jettyRun

В этот момент Gradle зависает и ожидает входящие отладочные соединения.

Затем я создал Remote RunКонфигурация в IntelliJ со значением «Аргументы командной строки для запуска удаленной JVM», равным -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

Наконец, я запустил эту новую конфигурацию, процесс возобновления gradle возобновился, и IDE остановилась на первой точке останова.

0 голосов
/ 03 ноября 2015

Также, пожалуйста, посмотрите на эти две ссылки из официальной вики:

https://github.com/akhikhl/gretty/issues/36

http://akhikhl.github.io/gretty-doc/Debugger-support.html

Это может помочь вам правильно настроить плагин gretty для отладки приложения Jetty с IntelliJ Idea

0 голосов
/ 05 января 2014

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

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

...