42

我正在使用 Groovy 1.8.6 附带的 Gradle 1.6,问题来了,我想执行需要 Groovy 2+ 的 groovy 脚本,但 Gradle 正在使用他自己的 groovy (1.8.6) 运行此脚本,而我的自定义任务是失败。

4

2 回答 2

79

您可以创建 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
于 2013-06-28T18:07:05.367 回答
0

如果要运行使用 @Grab 的脚本,则必须将 ivy 添加到编译器任务

configurations {
    ivy
}

dependencies {
    ivy 'org.apache.ivy:ivy:2.4.0'
}

tasks.withType(GroovyCompile) {
    groovyClasspath += configurations.ivy
}
于 2022-02-24T16:15:49.967 回答