Je veux utiliser le débogueur interactif avec IntelliJ. Malheureusement, je ne peux pas convaincre IntelliJ de charger et de compiler le plugin. cependant, Je peux faire gradle clean build
et le plugin construit et exécute ses tests comme prévu.
Plus précisément, j'essaie de déboguer les modifications locales en gradle-js-plugin et IntelliJ dit qu'il ne peut pas trouver com.google.javascript.jscomp.CompilerOptions
aussi bien que spock.lang.Specification
. (Je pense que c'est peut-être quelque chose à propos de la façon dont ils sont chargés, mais c'est une supposition.)
REMARQUE: Je n'ai annulé aucun processus entre les étapes.
J'ai remarqué n guide sur docs.codehaus.org . IntelliJ n'a pas pu trouver org.gradle.launcher.GradleMain
, je l'ai donc adapté pour utiliser GradleLauncher
avec ce qui suit:
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 documentation de GradleLauncher .
Résultat: IntelliJ ne compilera pas le projet.
~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
Résultat: Le projet se compile ( yay !), mais je ne peux atteindre que des points d'arrêt dans GradleScriptRunner.groovy
.
1 & 2. Fusionnés pour plus de clarté:
~# 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
Pour cette étape, j'ai essayé les configurations de fichiers .gradle suivantes:
1. Utilisez uniquement 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()
}
Résultat:
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. Utilisez à la fois build.gradle et 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()
}
Résultat:
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 IDEA Ultimate 117.499 w/ Bundled Gradle plugin
Tous les conseils qui me mettront en mode débogage dans le plugin.
Tout d'abord, il semble qu'il y ait un problème avec votre projet IDEA Gradle. Si vous exécutez gradlew cleanIdea idea
puis ouvrez le projet généré à partir de IDEA (plutôt que d'utiliser le plugin JetGradle), tout devrait bien se passer.
Deuxièmement, si vous ne parvenez toujours pas à faire fonctionner l'approche GradleMain/GradleLauncher (l'ancienne classe existe), une autre approche consiste à déboguer la génération Gradle en tant qu'application externe. Pour cela, vous devez ajouter -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
à la GRADLE_OPTS
variable d'environnement, exécutez la génération à partir de la ligne de commande, attendez qu'elle s'arrête, puis démarrez une configuration d'exécution "à distance" (avec les paramètres correspondants) à partir d'IDEA. À ce stade, le débogueur doit se connecter au processus Gradle et vous devez être opérationnel.
J'ai pu déboguer les sources gradle (y compris les plugins) en utilisant -Dorg.gradle.debug=true
(trouvé sur le forum Gradle ):
Arrêtez les démons le cas échéant:
./gradlew --stop
Courir
./gradlew <task> --no-daemon -Dorg.gradle.debug=true
Connectez-vous à distance au processus gradle (port 5005) - si vous utilisez IntelliJ IDEA, voir l'image OP ci-dessus
Il devrait s'arrêter sur les points d'arrêt maintenant.
BTW, j'ai créé un projet IntelliJ IDEA pour les sources Gradle. Depuis que j'utilise le wrapper Gradle, j'ai récupéré les sources de
~/.gradle/wrapper/dists/gradle-1.11-all/7qd8qq8te5j4f5q9aaei3gh3lj/gradle-1.11/src
Dans IDEA j'ai fait File->Import Project
, puis sélectionné le chemin ci-dessus, puis - "Créer un projet à partir de sources existantes". Appuyez plusieurs fois sur Next (assurez-vous que je n'ai inclus aucun bocal de lib/plugins
répertoire, car IDEA se plaindrait que la plupart des fichiers de projet existent déjà).
J'ai ensuite créé une configuration de débogage à distance dans ce projet IDEA et je l'ai utilisée pour déboguer gradle.
IntelliJ IDEA 12.1 offre la possibilité de déboguer les tâches gradle hors de la boîte - cliquez avec le bouton droit sur la tâche cible dans la liste des tâches de la fenêtre de l'outil JetGradle et choisissez "déboguer"