pdi*_*aso 19 groovy ruby-grape gradle
我正在使用Gradle编译Groovy项目,但我注意到当我在代码中使用@Grab注释时,我收到以下错误:
$ 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
(这里有完整的堆栈跟踪http://pastebin.com/0ty4jNct)
我发现使其工作的唯一方法是将'groovy'和'ivy'模块添加到groovy类路径中,但我想避免这种情况,因为不推荐使用groovy类路径.
这是Gradle bug吗?还是有更好的方法来管理@Grab依赖?
Pet*_*ser 32
@Grab用于未预编译的独立脚本,通常不会将它与编译代码一起使用.如果你这样做,你可能需要添加常春藤groovyClasspath.就像是:
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
}
Run Code Online (Sandbox Code Playgroud)
也就是说,更好的方法是使用Gradle管理依赖项.
接受的解决方案在编译时对我有用,但在运行时我仍然遇到类似的问题。通过从编译中完全排除葡萄代码,以下内容对我有用:
compileGroovy {
groovyOptions.configurationScript = file("gradle/config.groovy")
}
Run Code Online (Sandbox Code Playgroud)
...其中gradle/config.groovy是一个单独的文件,其内容是:
withConfig(configuration) {
configuration.setDisabledGlobalASTTransformations(['groovy.grape.GrabAnnotationTransformation'] as Set)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8124 次 |
| 最近记录: |