web-dev-qa-db-ja.com

デバッグモードでGradle経由でJettyを実行する方法

リモートデバッガーを接続できるように、デバッグモードで実行するようにjetty gradleプラグインを構成する方法を知っている人はいますか?

私はgradleを設定しようとしましたが、Java opts:

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

...しかし、うまくいかないようです。

Gradle(jettyRunまたはjettyRunWar)を使用するのではなく、自分の桟橋のインストールを正常に動作させることができます。

よろしく。

35
JARC

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プラグインの著者です。

17
akhikhl

私はマルチプロジェクトの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に追加すると、両方のバージョンで機能します!

5
user770119

デーモンモードでgradleを実行していますか?私の理解では、デーモンはjettyインスタンスを実行しています。したがって、デーモンのJVM引数を設定する必要があります。これは、gradle.propertiesでorg.gradle.jvmargsを設定することで可能になります。

http://gradle.org/docs/current/userguide/tutorial_this_and_that.html#sec:gradle_properties_and_system_properties を参照してください

ここでは非デーモンモードで動作する単純なプロジェクト

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ファイルにブレークポイントを設定できます。

5
thoredge

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に同じパラメーターを追加すると、機能しません...

3
user3876447

これをbuild.gradleに追加します

jettyRun {
    jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
}
2
Damith Ganegoda

私の場合、次のコマンドを実行するまで機能しません。 _GRADLE_OPTS='-XX:MaxPermSize=256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001' gradle jettyRun_

そして、それが機能するとき、サーバーコンソールでSystem.out.println(...)を使用して、見たいものを調べることができます。ブレークポイントデバッグについては、残念ながら、その方法は見つかりませんでした。誰でもその方法を知っています。補足を追加してください。

0
gongmingqm10

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は最初のブレークポイントで停止しました。

0
Cyrusmith

また、公式wikiからこの2つのリンクをご覧ください。

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

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

IntelliJ Ideaでjettyアプリケーションをデバッグするために、grettyプラグインを適切に構成するのに役立ちます

0
Sorokin Andrey