Проблема
Я хочу использовать интерактивный отладчик с IntelliJ. К сожалению, я не могу убедить IntelliJ загрузить и скомпилировать плагин. Однако я могу сделать gradle clean build
, и плагин строит и запускает свои тесты, как ожидалось.
В частности, я пытаюсь отладить локальные изменения gradle-js-plugin , и IntelliJ говорит, что не может найти com.google.javascript.jscomp.CompilerOptions
, а также spock.lang.Specification
. (Я думаю, может быть, это что-то о том, как они загружаются, но это предположение.)
Вещи, которые я пробовал
ПРИМЕЧАНИЕ. Я не возвращал никаких процессов между шагами.
0. Мой первый угадай
Я заметил howto на 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"
)
}
}
Per Документация GradleLauncher.
Результат: IntelliJ не будет компилировать проект.
1. Per Ответ Питера Нидервизера Исправить проект идеи и отладить через плагин
Действия
-
~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
- Открыл вновь созданный проект и попытался выполнить отладку с помощью ScriptRunner с шага 0.
Результат: Компиляция проекта (yay!), но я могу ударить только точки останова в GradleScriptRunner.groovy
.
2. Per Ответ Питера Нидервизера запустите 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
- Настройте 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
~# 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
В ожидании
Любые подсказки, которые приведут меня в режим отладки в плагине.