Running Groovy Scripts from Gradle

Running Groovy Scripts from Gradle

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.

2

2 Answers

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
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
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.