用IntelliJdebuggingGradle插件
问题
我想用IntelliJ使用交互式debugging器。 不幸的是,我无法说服IntelliJ加载和编译插件。 但是,我可以执行gradle clean build
,插件按预期构build并运行testing。
具体来说,我试图debugginggradle-js-plugin的本地更改,IntelliJ说它无法find com.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
脚步
-
~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
- 打开新创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
- 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源代码(包括插件):
-
停止守护进程(如果有):
./gradlew --stop
-
跑
./gradlew <task> --no-daemon -Dorg.gradle.debug=true
-
远程连接到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”