有谁知道如何配置jetty gradle插件以在调试模式下运行,以便我可以连接远程调试器?
我已经尝试将gradle和java选择设置为:
-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
......但它似乎不起作用。
我能够让我自己的码头安装工作正常,而不是通过gradle(jettyRun或jettyRunWar)。
问候。
答案 0 :(得分:46)
在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
答案 1 :(得分:17)
尝试使用Gretty插件,它提供了gradle任务jettyRunDebug,jettyStartDebug等。
源代码和文档:https://github.com/akhikhl/gretty
披露:我是Gretty插件的作者。
答案 2 :(得分:5)
您是否在守护进程模式下运行gradle?据我所知,守护进程将运行jetty实例。因此,您需要为守护程序设置JVM args。这可以通过在gradle.properties中设置org.gradle.jvmargs来实现。
只需在非守护进程模式下投影
的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 /主/ web应用/ 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 :(得分:5)
我是一个多项目的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适用于这两个版本!
答案 4 :(得分:3)
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中添加相同的参数时,它不起作用......
答案 5 :(得分:2)
将其添加到build.gradle
中jettyRun {
jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
答案 6 :(得分:0)
我是我的情况,直到我运行以下命令才能工作。
GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun
当它工作时,在服务器控制台中我可以使用System.out.println(...)
来检查我想要看到的内容。至于断点调试,遗憾的是,我还没有找到办法。任何人都知道如何,欢迎添加补充。
答案 7 :(得分:0)
另外,请看官方维基的这两个链接:
https://github.com/akhikhl/gretty/issues/36
http://akhikhl.github.io/gretty-doc/Debugger-support.html
它可以帮助您正确配置gretty插件以使用IntelliJ Idea
调试jetty应用程序答案 8 :(得分:0)
我用while(queryRun.next()){...}
属性运行它:
org.gradle.debug
此时gradle冻结并等待传入的调试连接。
然后我在IntelliJ中创建了远程运行配置,其值为“运行远程JVM的命令行参数”
./gradlew -Dorg.gradle.debug=true jettyRun
最后,我运行了这个新配置,gradle恢复了进度,IDE在第一个断点处停止。