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 grade et Java choisit de:
-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
... mais cela ne semble pas fonctionner.
Je peux faire fonctionner correctement ma propre installation de jetée, mais pas via gradle (jettyRun ou jettyRunWar).
Cordialement.
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
Essayez d’utiliser le plugin Gretty, il fournit des tâches de gradation telles que jettyRunDebug, jettyStartDebug, etc.
Code source et doc: https://github.com/akhikhl/gretty
Divulgation: Je suis l'auteur du plugin Gretty.
Le mien est une construction multi-projets 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 ne faisait pas non plus de différence. De plus, le fait de définir Java_OPTS au lieu de GRADLE_OPTS n'a pas résolu le problème non plus. Ce qui a résolu le problème pour moi, c’est d’ajouter un fichier gradle.properties avec:
org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y
Et immédiatement je pourrais atteindre le point d'arrêt. Peut-être que les solutions mentionnées dans d'autres réponses n'ont pas fonctionné pour moi car il s'agit d'une construction multi-projets. Pas certain!
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.
P.S: Essayer avec gradle 1.5/1.6 et ajouter le réglage ci-dessus à gradle.properties fonctionne pour les deux versions!
Vous exécutez gradle en mode démon? Si j'ai bien compris, le démon exécutera alors l'instance de jetty. Par conséquent, vous devez définir les arguments JVM pour le démon. Cela devrait être possible en définissant org.gradle.jvmargs dans gradle.properties.
Projet simple qui fonctionne ici en mode non démon
build.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 (en 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. Lorsque j'essaie ensuite d'ouvrir la page Web, Jetty me signale que je vais atteindre le point d'arrêt.
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, lancez 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.properties, cela ne fonctionne pas ...
ajoutez ceci dans le build.gradle
jettyRun {
jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
Dans mes cas, ça ne marche pas tant que je n'ai pas lancé la commande suivante .GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun
Et quand cela fonctionne, dans la console du serveur, je peux utiliser System.out.println(...)
pour vérifier ce que je veux voir. En ce qui concerne le point de débogage, malheureusement, je n’ai pas trouvé de solution. Tout le monde sait comment, bienvenue pour ajouter du complément.
Je l'ai couru avec la propriété org.gradle.debug
:
./gradlew -Dorg.gradle.debug=true jettyRun
À ce stade, gradle se fige et attend les connexions de débogage entrantes.
J'ai ensuite créé la configuration d'exécution à distance dans IntelliJ avec la valeur "arguments de ligne de commande permettant d'exécuter une machine virtuelle Java":
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Enfin, j'ai exécuté cette nouvelle configuration, Gradle a repris sa progression et IDE s'est arrêté au premier point d'arrêt.
Aussi, s'il vous plaît regardez ces deux liens du wiki officiel:
https://github.com/akhikhl/gretty/issues/36
http://akhikhl.github.io/gretty-doc/Debugger-support.html
Cela peut vous aider à configurer correctement le plugin gretty pour déboguer une application jetty avec IntelliJ Idea