用IntelliJdebuggingGradle插件

问题

我想用IntelliJ使用交互式debugging器。 不幸的是,我无法说服IntelliJ加载和编译插件。 但是,我可以执行gradle clean build ,插件按预期构build并运行testing。

具体来说,我试图debugginggradle-js-plugin的本地更改,IntelliJ说它无法findcom.google.javascript.jscomp.CompilerOptions以及spock.lang.Specification (我想也许这是关于他们的方式加载,但这是一个猜测。)

我试过的东西

注:我没有恢复步骤之间的任何进程。

我的第一个猜测

我注意到docs.codehaus.org上的一个howto 。 IntelliJ无法findorg.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 Peter Niederwieser的答案通过插件修复想法项目和debugging

脚步

  1. ~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
  2. 打开新创build的项目,并尝试使用步骤0中的ScriptRunner进行debugging。

结果:项目编译( 耶! ),但我只能在GradleScriptRunner.groovy命中断点。


2.每Peter Peter Niederwieser的答案运行gradle CLI w /特殊选项

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. configurationIntelliJ连接到这个端口并开始debugging(见图): 我如何配置调试器

对于这一步,我尝试了下面的.gradle文件configuration:

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的

 ~# 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 

希望

任何提示将使我进入插件内的debugging模式。

首先,这听起来像您的IDEA Gradle项目有问题。 如果你运行gradlew cleanIdea idea ,然后从IDEA(而不是使用JetGradle插件)打开生成的项目,一切都应该没问题。

其次,如果仍然无法使GradleMain / GradleLauncher(前一类确实存在)方法起作用,另一种方法是将Gradle构builddebugging为外部应用程序。 为此,您需要在GRADLE_OPTS环境variables中添加-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ,从命令行运行构build,等待其暂停,然后启动“远程“从IDEA运行configuration(具有相应的设置)。 在这一点上,debugging器应该连接到Gradle进程,你应该启动并运行。

我能够使用-Dorg.gradle.debug=true ( 在gradle论坛上find)来debugginggradle源代码(包括插件):

  1. 停止守护进程(如果有):

    ./gradlew --stop

  2. ./gradlew <task> --no-daemon -Dorg.gradle.debug=true

  3. 远程连接到gradle进程(端口5005) – 如果使用IntelliJ IDEA,请参阅上面的OP的图像

它现在应该停在断点上。


顺便说一句,我已经创build了一个单独的IntelliJ IDEA项目的Gradle来源。 由于我使用gradle包装,我抓住了来源

~/.gradle/wrapper/dists/gradle-1.11-all/7qd8qq8te5j4f5q9aaei3gh3lj/gradle-1.11/src

在IDEA中,我做了File->Import Project ,然后select了上面的path,然后 – “从现有源创build项目”。 点击Next几次(确保我没有包含来自lib/plugins目录的任何jar,因为IDEA会抱怨大多数项目文件已经存在)。

然后,我在该IDEA项目中创build了一个远程debuggingconfiguration,并将其用于debugginggradle。

IntelliJ IDEA 12.1提供了开箱即可debugginggradle任务的function – 在JetGradle工具窗口任务列表中右键单击目标任务,然后select“debugging”