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.
22 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 0If 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 }