I am using Gradle 1.6 which comes with Groovy 1.8.6 and here comes the problem, I want to execute groovy script which need Groovy 2+, but Gradle is running this script with his own groovy (1.8.6) and my custom task is failing.
Asked
Active
Viewed 2.8k times
2 Answers
80
You can create src/main/groovy, put your script called 'myscript.groovy' in there:
println "hello world from groovy version ${GroovySystem.version}"
Then, have a build.gradle file in your project root directory:
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
}
Then, you can execute your script (with output)
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

Hans Westerbeek
- 5,645
- 3
- 34
- 35
0
If you want to run scripts that uses @Grab you have to add ivy to compiler task
configurations {
ivy
}
dependencies {
ivy 'org.apache.ivy:ivy:2.4.0'
}
tasks.withType(GroovyCompile) {
groovyClasspath += configurations.ivy
}