リモートデバッガーを接続できるように、デバッグモードで実行するようにjetty gradleプラグインを構成する方法を知っている人はいますか?
私はgradleを設定しようとしましたが、Java opts:
-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
...しかし、うまくいかないようです。
Gradle(jettyRunまたはjettyRunWar)を使用するのではなく、自分の桟橋のインストールを正常に動作させることができます。
よろしく。
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
Grettyプラグインを使用してみてください。gradtyタスクjettyRunDebug、jettyStartDebugなどを提供します。
ソースコードとドキュメント: https://github.com/akhikhl/gretty
開示:私はGrettyプラグインの著者です。
私はマルチプロジェクトのgradleビルドで、私は試しました:
$ export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,suspend=y,server=y"
$ gradle jettyRun
そして、それはうまくいきませんでした。上記のGRADLE_OPTS設定に-Xnoagentを追加しようとしましたが、それでも違いはありませんでした。また、GRADLE_OPTSの代わりにJava_OPTSを設定しても、問題は解決しませんでした。私にとって問題を解決したのは、gradle.propertiesを追加することでした:
org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=y
そしてすぐにブレークポイントに到達できました。それはマルチプロジェクトビルドであるため、他の回答で言及された解決策が私にとってはうまくいかなかったかもしれません。わからない!
上記の解決策が他の人には役に立たない場合に私のために働いた解決策を提供したかっただけです。
追伸:gradle 1.5/1.6で試してみましたが、上記の設定をgradle.propertiesに追加すると、両方のバージョンで機能します!
デーモンモードでgradleを実行していますか?私の理解では、デーモンはjettyインスタンスを実行しています。したがって、デーモンのJVM引数を設定する必要があります。これは、gradle.propertiesでorg.gradle.jvmargsを設定することで可能になります。
ここでは非デーモンモードで動作する単純なプロジェクト
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>
コマンドライン(cygwinでも):
$ GRADLE_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n' gradle jettyRun
その後、Gradleがハングし、Intellijからデバッガーをポート9999に配置して、Javaファイルにブレークポイントを設定できます。
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に同じパラメーターを追加すると、機能しません...
これをbuild.gradleに追加します
jettyRun {
jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
私の場合、次のコマンドを実行するまで機能しません。 _GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun
_
そして、それが機能するとき、サーバーコンソールでSystem.out.println(...)
を使用して、見たいものを調べることができます。ブレークポイントデバッグについては、残念ながら、その方法は見つかりませんでした。誰でもその方法を知っています。補足を追加してください。
org.gradle.debug
プロパティで実行しました:
./gradlew -Dorg.gradle.debug=true jettyRun
この時点で、gradleはフリーズし、着信デバッグ接続を待ちます。
次に、IntelliJで「リモートJVMを実行するためのコマンドライン引数」の値を-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
にするリモート実行構成を作成しました
最後に、この新しい構成を実行し、gradleは進行を再開し、IDEは最初のブレークポイントで停止しました。
また、公式wikiからこの2つのリンクをご覧ください。
https://github.com/akhikhl/gretty/issues/36
http://akhikhl.github.io/gretty-doc/Debugger-support.html
IntelliJ Ideaでjettyアプリケーションをデバッグするために、grettyプラグインを適切に構成するのに役立ちます