Running Groovy scripts from Gradle using a different version of Groovy
Asked Answered
F

2

41

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.

Foment answered 28/6, 2013 at 8:45 Comment(2)
And what prevents you from backporting your script to work with groovy 1.8.x?Vidovic
«Groovy 1.8.x cant parse large XML files» is completely falseHaden
A
81

You can create directory 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
Alcoholometer answered 28/6, 2013 at 18:7 Comment(0)
R
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
}
Raddled answered 24/2, 2022 at 16:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.