Cómo ejecutar Jetty a través de Gradle en modo de depuración
(9)
¿Estás ejecutando gradle en modo daemon? Según tengo entendido, el daemon ejecutará la instancia del malecón. Por lo tanto, deberá configurar los argumentos de JVM para el daemon. Esto debería ser posible configurando org.gradle.jvmargs en gradle.properties.
Simplemente proyecto que funciona aquí en modo no demoníaco
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>
Línea de comandos (sin embargo, en cygwin):
$ GRADLE_OPTS=''-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n'' gradle jettyRun
Gradle se cuelga y puedo poner el depurador de Intellij en el puerto 9999 y establecer un punto de interrupción en el archivo java. Cuando intento abrir la página web, el embarcadero me informa que llegaré al punto de interrupción.
¿Alguien sabe cómo configurar el plugin jetty gradle para que se ejecute en modo de depuración de forma que pueda adjuntar un depurador remoto?
Intenté configurar las opciones gradle y java para:
-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
... pero parece que no funciona.
Puedo hacer que mi propia instalación de embarcadero funcione bien, pero no a través de gradle (jettyRun o jettyRunWar).
Saludos.
Además, mira estos dos enlaces de la wiki oficial:
https://github.com/akhikhl/gretty/issues/36
http://akhikhl.github.io/gretty-doc/Debugger-support.html
Puede ayudarle a configurar correctamente el complemento gretty para depurar la aplicación del embarcadero con IntelliJ Idea
El mío es una construcción de gradle multiproyecto e intenté:
$ export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,suspend=y,server=y"
$ gradle jettyRun
Y eso NO funcionó. Incluso traté de agregar -Xnoagent a la configuración GRADLE_OPTS anterior, pero eso tampoco marcó la diferencia. Además, establecer JAVA_OPTS en lugar de GRADLE_OPTS tampoco solucionó el problema. Lo que me solucionó el problema fue agregar un gradle.properties con:
org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y
Y de inmediato pude alcanzar el punto de quiebre. Puede que las soluciones mencionadas en otras respuestas no funcionen para mí porque es una compilación de proyectos múltiples. ¡No es seguro!
Solo quería proporcionar la solución que funcionó para mí en caso de que las soluciones anteriores no funcionen para otras personas.
PD: ¡Probé con gradle 1.5 / 1.6 y agregué la configuración anterior a gradle.properties para ambas versiones!
En Linux:
export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n"
gradle jettyRun
En Windows:
set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
gradle jettyRun
En mi caso, no funciona hasta que ejecuto el siguiente comando. GRADLE_OPTS=''-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001'' gradle jettyRun
Y cuando funciona, en la consola del servidor puedo usar System.out.println(...)
para inspeccionar lo que quiero ver. En cuanto a la depuración de punto de interrupción, desafortunadamente, no he encontrado la manera de hacerlo. Alguien sabe cómo, bienvenido a agregar complemento.
Lo ejecuté con la propiedad org.gradle.debug
:
./gradlew -Dorg.gradle.debug=true jettyRun
En este punto, gradle se congela y espera las conexiones de depuración entrantes.
Luego creé la configuración de ejecución remota en IntelliJ con el valor de "Argumentos de línea de comando para ejecutar JVM remota" para que sea -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Finalmente, ejecuté esta nueva configuración, gradle reanudó el progreso y IDE se detuvo en el primer punto de interrupción.
Pruebe usar el plugin Gretty, proporcionó las tareas de gradle, jettyRunDebug, jettyStartDebug, etc.
Código fuente y documento: https://github.com/akhikhl/gretty
Divulgación: soy autor del plugin Gretty.
agregar esto en build.gradle
jettyRun {
jvmArgs ''-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005''
}
set GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
NO funciona para mí también cuando se ejecuta con gradle jettyRunWar
.
Encontré otra solución que funciona, ejecute gradle jettyRunWar con las siguientes opciones gradle -Dorg.gradle.jvmargs="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" jettyRunWar
.
Pero cuando agrego el mismo parámetro en gradle.properties, no funciona ...