web-dev-qa-db-ja.com

gradleでスプリングアプリケーションをデバッグする方法

私は春のアプリに取り組んでおり、それがどのように機能するかを見るためにコントローラーメソッドをステップスルーする必要があります。私はEclipseで作業しており、gradle bootRunコマンド。

デバッグモードで実行する方法

私は試した gradle bootRun --debugしかし、それはデバッグモードではなく、単なるデバッグログです

私は試した gradle help --task bootRun-これは、私が見たタスクに関する情報を提供します--debug-jvmオプション。ただし、実行するとgradle bootRun --debug-jvmアプリケーションが起動しない

31
rigby

gradle bootRun --debug-jvmを実行すると、デバッガーをリッスンしているポート(ポート5005)に接続するまで、アプリケーションは中断されます。

49
dankirkd

上記のdankdirkdの回答に対する回答として:( compare

gradle bootRun --debug-jvm

gradleビルドをデバッグモードで実行します。それはおそらくあなたが望むものではありません。達成したいのは、springBootタスクがアプリケーションをデバッグモードで起動することです。

スプリングブートタスクは、gradle JavaExec タスクを拡張します。 build.gradleファイルでbootRunタスクを構成して、次のようなデバッグ構成を追加できます。

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}

Build.gradle.ktsの場合、これは次のようになります(サスペンドモードが無効の場合):

tasks {
    val bootRun by getting(BootRun::class) {
        jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32323")
    }
}

サーバーがクラウド内にあり、ローカルマシンからデバッグする場合は、外部からの接続が許可されていることを確認する必要があります。その場合は以下の構成を使用してください

tasks {
val bootRun by getting(BootRun::class) {
    jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
    }
}

アドレスは現在0.0.0.0:portただportの代わりに

21
rexford