2013-08-11 13 views
15

Mam kompilacji Groovy projekt z Gradle, ale zauważyłem, że kiedy używam @Grab adnotacji w moim kodu, pojawia się następujący błąd:Błąd kompilacji Groovy projekt za pomocą @Grab adnotacji

 
$ 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 

(pełna ślad stosu tutaj http://pastebin.com/0ty4jNct)

Znalazłem się, że jedynym sposobem, aby dostać pracy jest dodanie „groovy” oraz moduł „bluszcz” do porywające ścieżce klas, ale chciałbym unikaj tego, ponieważ ścieżka klasy jest przestarzała.

Czy to błąd programu Gradle? lub istnieje lepszy sposób zarządzania zależności @Grab?

Odpowiedz

23

@Grab jest przeznaczony do samodzielnych skryptów, które nie są prekompilowane, a użytkownik zwykle nie używałby go razem ze skompilowanym kodem. Jeśli to zrobisz, być może będziesz musiał dodać bluszcz do groovyClasspath. Coś takiego:

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 
} 

Powiedziawszy, lepszym rozwiązaniem jest zarządzanie zależnościami z Gradle.

+0

Witam, myślę, że chodziło Ci o: 'configurations {ivy}' i używa go w bloku 'dependencies', ale zwraca' Nie można wywnioskować ścieżki klasy Groovy, ponieważ nie znaleziono Groovy Jar na ścieżce klasy: configuration ': compile'' – pditommaso

+0

Right. Oczywiście będziesz musiał zadeklarować zależność Groovy. –

+1

Czy możliwe jest posiadanie "skryptu" Groovy, który można uruchomić zarówno w wersji samodzielnej (z '@ Grab'), jak iw kontekście Maven? – MarkHu

0

Przyjęte rozwiązanie działało dla mnie podczas kompilacji, ale nadal miałem podobne problemy w czasie wykonywania. Poniższa pracował dla mnie przez wykluczenie kod z winogron z kompilacji sumie:

compileGroovy { 
    groovyOptions.configurationScript = file("gradle/config.groovy") 
} 

... gdzie gradle/config.groovy jest oddzielny plik, którego zawartość:

withConfig(configuration) { 
    configuration.setDisabledGlobalASTTransformations(['groovy.grape.GrabAnnotationTransformation'] as Set) 
} 
Powiązane problemy