Comment exécuter Jetty via Gradle en mode débogage

Est-ce que quelqu'un sait comment configurer le plugin Jetty gradle pour qu'il s'exécute en mode débogage afin que je puisse attacher un débogueur distant?

J'ai essayé de définir le gradle et java opte pour:

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

...mais il ne semble pas fonctionner.

Je suis capable de faire fonctionner ma propre installation de jetty, mais pas via gradle (jettyRun ou jettyRunWar).

Cordialement.

34
demandé sur JamesC 2012-02-16 20:50:25

9 réponses

Sous Linux:

export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n"
gradle jettyRun

Sous Windows:

set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=‌​n
gradle jettyRun
46
répondu Luis Ramirez-Monterosa 2016-12-20 09:17:22

Essayez d'utiliser le plugin Gretty, il a fourni des tâches gradle jettyRunDebug, jettyStartDebug etc.

Code Source et doc: https://github.com/akhikhl/gretty

Divulgation: je suis l'auteur du plugin Gretty.

16
répondu akhikhl 2014-05-05 15:59:11

Utilisez-vous gradle en mode démon? Si je comprends bien, le démon exécutera alors l'instance jetty. Par conséquent, vous devrez définir les arguments JVM pour le démon. Cela devrait être possible en définissant l'organisation.gradle.jvmargs dans gradle.propriété.

Voir http://gradle.org/docs/current/userguide/tutorial_this_and_that.html#sec:gradle_properties_and_system_properties

Simplement un projet qui fonctionne ici dans non-daemon en mode

Construire.gradle:

apply plugin: 'idea'
apply plugin: 'jetty'

Src / main / java / com / Test.java:

package com;
public class Test {
    static public String greet() {
        return "Hi";
    }
}

Src / main / webapp / index.jsp:

<%@ page import="com.Test" %>
<html><body>
<%= Test.greet() %>
</body></html>

Ligne de commande (dans cygwin cependant):

$ GRADLE_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n' gradle jettyRun

Gradle se bloque alors et je peux mettre le débogueur D'Intellij sur le port 9999 et définir un point d'arrêt dans le fichier java. Quand j'essaie alors d'ouvrir la page Web jetty m'informe que je vais atteindre le point d'arrêt.

5
répondu thoredge 2012-02-22 12:15:56

Le mien est une construction gradle multi-projet et j'ai essayé:

$ export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,suspend=y,server=y"
$ gradle jettyRun

Et cela N'a pas fonctionné. J'ai même essayé d'ajouter -Xnoagent au paramètre GRADLE_OPTS ci-dessus, mais cela n'a pas non plus fait de différence. En outre, définir JAVA_OPTS au lieu de GRADLE_OPTS n'a pas non plus résolu le problème. Ce qui a résolu le problème pour moi était d'ajouter un gradle.propriétés avec:

org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y

Et immédiatement je pouvais atteindre le point d'arrêt. Peut-être des solutions mentionnées dans d'autres réponses n'ont pas fonctionné pour moi parce que c'est un construction multi-projet. Pas sûr!

Je voulais juste fournir la solution qui a fonctionné pour moi au cas où les solutions ci-dessus ne fonctionneraient pas pour d'autres personnes.

PS: essayé avec gradle 1.5 / 1.6 et en ajoutant le paramètre ci-dessus à gradle.propriétés fonctionne pour les deux versions!

5
répondu user770119 2013-08-06 20:52:13

set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n ne fonctionne pas pour moi aussi lorsqu'il est exécuté avec gradle jettyRunWar.

J'ai trouvé une autre solution qui fonctionne, exécutez gradle jettyRunWar avec les options ci-dessous gradle -Dorg.gradle.jvmargs="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" jettyRunWar.

Mais quand j'ajoute le même paramètre dans gradle.propriétés, il ne fonctionne pas...

3
répondu user3876447 2015-02-03 06:38:46

Ajoutez ceci dans la construction.gradle

jettyRun {
    jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
2
répondu Damith Ganegoda 2016-07-14 06:34:25

Im mes cas, cela ne fonctionne pas jusqu'à ce que j'exécute la commande suivante. GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun

Et quand il fonctionne, dans la console du serveur, je peux utiliser System.out.println(...) pour inspecter ce que je veux voir. En ce qui concerne le débogage de point d'arrêt, malheureusement, je n'ai pas trouvé de moyen. Tout le monde sait comment, bienvenue à ajouter un complément.

0
répondu gongmingqm10 2014-01-05 07:21:07

Aussi, veuillez regarder ces deux liens du wiki officiel:

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

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

Il peut vous aider à configurer correctement le plugin gretty pour déboguer l'application jetty avec IntelliJ Idea

0
répondu Sorokin Andrey 2015-11-03 08:31:31

Je l'ai couru avec org.gradle.debug propriété:

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

À ce stade, gradle gèle et attend les connexions de débogage entrantes.

Ensuite, j'ai créé la configuration D'exécution à distance dans IntelliJ avec la valeur de "arguments de ligne de commande pour exécuter la JVM distante" pour être -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

Enfin, j'ai couru cette nouvelle configuration, gradle a repris la progression et IDE arrêté au premier point d'arrêt.

0
répondu Cyrusmith 2016-06-24 03:28:39