tutorial run intellij idea create configurar application debugging intellij-idea gradle

debugging - run - Complementos Debug Gradle con IntelliJ



intellij create kotlin gradle project (3)

IntelliJ IDEA 12.1 proporciona la capacidad de depurar las tareas de Gradle de fábrica: haga clic con el botón derecho en la tarea objetivo en la lista de tareas de la ventana de la herramienta JetGradle y elija "depurar".

Problema

Quiero usar el depurador interactivo con IntelliJ. Lamentablemente, no puedo convencer a IntelliJ para cargar y compilar el complemento. Sin embargo, puedo hacer gradle clean build y el plugin se construye y ejecuta sus pruebas como se esperaba.

Específicamente, estoy intentando depurar los cambios locales a gradle-js-plugin e IntelliJ dice que no puede encontrar com.google.javascript.jscomp.CompilerOptions ni spock.lang.Specification . (Estoy pensando que tal vez es algo sobre la forma en que están cargados, pero eso es una suposición).


Cosas que he intentado

NOTA: No revertí ningún proceso entre pasos.

0. My First Guess

Noté un docs.codehaus.org en docs.codehaus.org . IntelliJ no pudo encontrar org.gradle.launcher.GradleMain , así que lo he adaptado para usar GradleLauncher con lo siguiente:

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" ) } }

La documentación de Per GradleLauncher .

Resultado: IntelliJ no compilará el proyecto.

1. Según la respuesta de Peter Niederwieser Reparar el proyecto de la idea y depurar mediante el complemento

Pasos

  1. ~# cd /path/to/gradle-js-plugin && gradle cleanIdea idea
  2. Inicié el proyecto recién creado e intenté depurar usando ScriptRunner desde el paso 0.

Resultado: el proyecto se compila ( ¡yay! ), Pero solo puedo GradleScriptRunner.groovy puntos de interrupción en GradleScriptRunner.groovy .

2. Según la respuesta de Peter Niederwieser ejecutar CLI de gradle con opciones especiales

1 y 2. Fusionada para mayor claridad:

~# 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. Configure IntelliJ para conectarse a este puerto y comenzar a depurar (ver imagen):

Para este paso probé las siguientes configuraciones de archivos .gradle:

1. Use solo 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() }

Salir:

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. Utilice ambos build.gradle y 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() }

Salir:

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

Mi configuración

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

Con la esperanza de

Cualquier sugerencia que me lleve al modo de depuración dentro del complemento.


Primero, parece que hay un problema con su proyecto IDEA Gradle. Si ejecuta la gradlew cleanIdea idea y luego abre el proyecto generado desde IDEA (en lugar de usar el complemento JetGradle), todo estará bien.

En segundo lugar, si todavía no puede obtener el enfoque de GradleMain / GradleLauncher (la clase anterior existe), otro enfoque es depurar la compilación de Gradle como una aplicación externa. Para eso necesita agregar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 a la variable de entorno GRADLE_OPTS , ejecutar la compilación desde la línea de comando, esperar hasta que se suspenda, y luego iniciar un " Remoto "ejecutar la configuración (con la configuración correspondiente) de IDEA. En ese punto, el depurador debe conectarse al proceso de Gradle y usted debe estar en funcionamiento.


Pude depurar las fuentes de Gradle (incluidos los complementos) utilizando -Dorg.gradle.debug=true (que se encuentra en el foro de Gradle ):

  1. Detener daemons si hay alguno:

    ./gradlew --stop

  2. correr

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

  3. Conéctese remotamente al proceso gradle (puerto 5005) - si usa IntelliJ IDEA, vea la imagen de OP arriba

Debería detenerse en puntos de interrupción ahora.

Por cierto, he creado un proyecto IntelliJ IDEA aparte para las fuentes de gradle. Como utilizo gradle wrapper, agarré las fuentes de

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

En IDEA hice File->Import Project , luego seleccioné la ruta anterior, luego - "Crear proyecto de fuentes existentes". Presiona Siguiente par de veces (asegúrate de que no incluí ningún frasco del directorio lib/plugins , ya que IDEA se quejaría de que la mayoría de los archivos de proyecto ya existen).

Luego creé una configuración de depuración remota en ese proyecto IDEA y la utilicé para depurar gradle.