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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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