groovy - docs - grails documentation 2.4 4
Error al compilar un proyecto Groovy usando la anotaciĆ³n @Grab (2)
La solución aceptada funcionó para mí en tiempo de compilación, pero todavía tenía problemas similares en tiempo de ejecución. Lo siguiente funcionó para mí al excluir el código de uva de la compilación por completo:
compileGroovy {
groovyOptions.configurationScript = file("gradle/config.groovy")
}
... donde gradle/config.groovy
es un archivo separado, cuyo contenido fue:
withConfig(configuration) {
configuration.setDisabledGlobalASTTransformations([''groovy.grape.GrabAnnotationTransformation''] as Set)
}
Estoy compilando un proyecto Groovy con Gradle, pero he notado que cuando uso la anotación @Grab en mi código, obtengo el siguiente error:
$ gradle compile :buildInfo :compileJava UP-TO-DATE :compileGroovy FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task '':compileGroovy''. > org/apache/ivy/core/report/ResolveReport
(Rastreo de pila completa aquí http://pastebin.com/0ty4jNct )
Descubrí que la única forma de hacerlo funcionar es agregar el módulo ''groovy'' y ''ivy'' a la classpath groovy , pero me gustaría evitar esto, ya que la classpath groovy está obsoleta.
¿Es este un error de Gradle? ¿O hay una mejor manera de gestionar la dependencia @Grab?
@Grab
está destinado a ser usado para scripts independientes que no están precompilados, y normalmente no lo usaría junto con el código compilado. Si lo haces, es posible que tengas que agregar Ivy a groovyClasspath
. Algo como:
repositories {
mavenCentral()
}
configurations {
ivy
}
dependencies {
ivy "org.apache.ivy:ivy:2.3.0"
compile "org.codehaus.groovy:groovy-all:2.1.5"
}
tasks.withType(GroovyCompile) {
groovyClasspath += configurations.ivy
}
Dicho esto, un mejor enfoque es gestionar las dependencias con Gradle.