42

問題

IntelliJ で対話型デバッガーを使用したいと考えています。 残念ながら、IntelliJ にプラグインをロードしてコンパイルさせることはできません。ただし、gradle clean buildプラグインは期待どおりにビルドしてテストを実行できます。

具体的には、 gradle-js-plugin へのローカルの変更をデバッグしようとしてますが、IntelliJ は. (ロードの仕方が関係しているのではないかと思いますが、これは推測です。)com.google.javascript.jscomp.CompilerOptionsspock.lang.Specification


私が試したこと

注:ステップ間でプロセスを元に戻しませんでした。

0. 私の最初の推測

docs.codehaus.org のハウツーに気づきました。IntelliJ は を見つけることができなかったので、次のようorg.gradle.launcher.GradleMainに使用するように調整しました。GradleLauncher

import org.gradle.GradleLauncher

class GradleScriptRunner {
    public static void main(String[] args) {
        GradleLauncher.newInstance(
            "-p", 
            "/path/to/gradle-js-plugin/src/test/resources/build.gradle", 
            "clean assemble"
        )
    }
}

GradleLauncher のドキュメントごと。

結果: IntelliJ はプロジェクトをコンパイルしません。


1. Peter Niederwieser の回答によるアイデア プロジェクトの修正とプラグインによるデバッグ

手順

  1. ~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
  2. 新しく作成したプロジェクトを開き、ステップ 0 から ScriptRunner を使用してデバッグを試みました。

結果:プロジェクトはコンパイルされますが (イェーイ! )、ブレークポイントしかヒットできませんGradleScriptRunner.groovy


2. Peter Niederwieserの回答に従って、特別なオプションを使用してgradle CLIを実行します

1 & 2. わかりやすくするために統合:

~# export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
~# gradle clean assemble
Listening for transport dt_socket at address: 5005
  1. このポートに接続してデバッグを開始するように IntelliJ を構成します (画像を参照)。 デバッガーの構成方法

このステップでは、次の .gradle ファイル構成を試しました。

1. build.gradle のみを使用する

--build.gradle--

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'js'

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        compile findProject "/path/to/gradle-js-plugin"
    }
}

repositories {
    mavenLocal()
    mavenCentral()
}

結果:

FAILURE: Build failed with an exception.

* Where:
Build file '/path/to/gradle-js-plugin/src/test/resources/build.gradle' line: 13

* What went wrong:
A problem occurred evaluating root project 'resources'.
> No such property: findProject for class: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 8 mins 50.498 secs

2. build.gradle と settings.gradle の両方を使用する

--settings.gradle--

include "/path/to/gradle-js-plugin"

--build.gradle--

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'js'

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

repositories {
    mavenLocal()
    mavenCentral()
}

結果:

FAILURE: Build failed with an exception.

* Where:
Build file '/path/to/gradle-js-plugin/src/test/resources/build.gradle' line: 5

* What went wrong:
A problem occurred evaluating root project 'resources'.
> Plugin with id 'js' not found.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 13.553 secs


マイセットアップ

グラドル

~# gradle -v
------------------------------------------------------------
Gradle 1.0
------------------------------------------------------------

Gradle build time: Tuesday, June 12, 2012 12:56:21 AM UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.2 compiled on December 20 2010
Ivy: 2.2.0
JVM: 1.7.0_04 (Oracle Corporation 23.0-b21)
OS: Linux 3.2.0-2-amd64 amd64

ジャワ

~# java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

IntelliJ

IntelliJ IDEA Ultimate 117.499 w/ Bundled Gradle plugin

期待して

プラグイン内でデバッグ モードに入るヒント。

4

3 に答える 3

28

まず、IDEA Gradle プロジェクトに問題があるようです。gradlew cleanIdea idea(JetGradle プラグインを使用するのではなく) IDEA から生成されたプロジェクトを実行して開くと、すべて問題なく動作します。

第 2 に、GradleMain/GradleLauncher (以前のクラスは存在します) のアプローチがまだ機能しない場合は、Gradle ビルドを外部アプリケーションとしてデバッグする別のアプローチがあります。そのために-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005は、環境変数に追加しGRADLE_OPTS、コマンド ラインからビルドを実行し、中断するまで待ってから、IDEA から "リモート" 実行構成 (対応する設定を使用) を開始する必要があります。その時点で、デバッガーは Gradle プロセスに接続し、起動して実行する必要があります。

于 2012-06-20T23:42:03.723 に答える
18

IntelliJ IDEA 12.1 は、すぐに使用できる Gradle タスクをデバッグする機能を提供します。JetGradle ツール ウィンドウのタスク リストでターゲット タスクを右クリックし、「デバッグ」を選択します。

于 2013-03-28T08:54:28.833 に答える