fnc*_*omp 38 debugging intellij-idea gradle
我想使用IntelliJ的交互式调试器. 不幸的是,我无法说服IntelliJ加载和编译插件.但是,我可以这样做gradle clean build,插件构建并按预期运行其测试.
具体来说,我试图调试本地更改摇篮-JS-插件 和IntelliJ说,它无法找到 com.google.javascript.jscomp.CompilerOptions和spock.lang.Specification.(我想也许这是他们加载的方式,但这是猜测.)
注意:我没有在步骤之间恢复任何进程.
我在docs.codehaus.org上发现了一个howto.IntelliJ无法找到,所以我已将其改编为使用以下内容:org.gradle.launcher.GradleMainGradleLauncher
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"
)
}
}
Run Code Online (Sandbox Code Playgroud)
Per GradleLauncher的文档.
结果: IntelliJ不会编译项目.
~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea结果:项目编译(耶!),但我只能打到断点GradleScriptRunner.groovy.
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
Run Code Online (Sandbox Code Playgroud)

对于此步骤,我尝试了以下.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()
}
Run Code Online (Sandbox Code Playgroud)
结果:
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
Run Code Online (Sandbox Code Playgroud)
2.同时使用build.gradle和settings.gradle
--settings.gradle--
include "/path/to/gradle-js-plugin"
Run Code Online (Sandbox Code Playgroud)
--build.gradle--
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'js'
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
repositories {
mavenLocal()
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
结果:
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
Run Code Online (Sandbox Code Playgroud)
~# 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
Run Code Online (Sandbox Code Playgroud)
~# 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)
Run Code Online (Sandbox Code Playgroud)
IntelliJ IDEA Ultimate 117.499 w/ Bundled Gradle plugin
Run Code Online (Sandbox Code Playgroud)
任何提示都会让我进入插件的调试模式.
Den*_*hev 28
我能够使用-Dorg.gradle.debug=true(在gradle论坛上找到)调试gradle源(包括插件):
如果有的话停止守护进程:
./gradlew --stop
跑
./gradlew <task> --no-daemon -Dorg.gradle.debug=true
远程连接到gradle进程(端口5005) - 如果使用IntelliJ IDEA,请参阅上面的OP图像
它现在应该停在断点上.
顺便说一下,我为gradle源创建了一个单独的IntelliJ IDEA项目.因为我使用gradle包装器,所以我从中获取了源代码
~/.gradle/wrapper/dists/gradle-1.11-all/7qd8qq8te5j4f5q9aaei3gh3lj/gradle-1.11/src
在IDEA我做了File->Import Project,然后选择了上面的路径,然后 - "从现有来源创建项目".点击下一次(确保我没有包含lib/plugins目录中的任何jar ,因为IDEA会抱怨大多数项目文件已经存在).
然后,我在该IDEA项目中创建了一个远程调试配置,并将其用于调试gradle.
Pet*_*ser 26
首先,听起来您的IDEA Gradle项目存在问题.如果你运行gradlew cleanIdea idea然后从IDEA打开生成的项目(而不是使用JetGradle插件),一切都应该没问题.
其次,如果仍然无法获得GradleMain/GradleLauncher(前一类确实存在)的工作方法,另一种方法是将Gradle构建作为外部应用程序进行调试.为此,您需要添加-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005到GRADLE_OPTS环境变量,从命令行运行构建,等待它暂停,然后从IDEA启动"远程"运行配置(具有相应的设置).此时,调试器应连接到Gradle进程,您应该已启动并运行.
| 归档时间: |
|
| 查看次数: |
30257 次 |
| 最近记录: |