我正在使用Groovy 1.8.6附带的Gradle 1.6,问题来了,我想执行需要Groovy 2的groovy脚本,但是Gradle正在用他自己的groovy(1.8.6)运行这个脚本,我的自定义任务失败了。
您可以创建src/main/groovy,将名为“myscript. groovy”的脚本放在那里:
println "hello world from groovy version ${GroovySystem.version}"
然后,在项目根目录中有一个build. gradle文件:
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.0.5'
}
task runScript (dependsOn: 'classes', type: JavaExec) {
main = 'myscript'
classpath = sourceSets.main.runtimeClasspath
}
然后,您可以执行您的脚本(带有输出)
hw@hbook:ex $ gradle runScript
:compileJava UP-TO-DATE
:compileGroovy
:processResources UP-TO-DATE
:classes
:runScript
hello world from groovy version 2.0.5
BUILD SUCCESSFUL
Total time: 6.118 secs
如果你想运行使用@Grab的脚本,你必须将ivy添加到编译器任务
configurations {
ivy
}
dependencies {
ivy 'org.apache.ivy:ivy:2.4.0'
}
tasks.withType(GroovyCompile) {
groovyClasspath += configurations.ivy
}