Predmet tiketa je konfiguracija Gradle skripte za gradnju.
Желим да могу да користим Groovy скрипт без да направим референцу
у Gradle пројекту у којем га сам прикључио
Želim da imam mogućnost da pokrenem ovaj Groovy skript izvan Gradle.
Bez da ivy anotacije preuzimanja vanjske zavisnosti
ne dolaze da izazovu probleme performansi ili kompajliranja
Gradle build skripte.
Da bi ilustrirao konfiguraciju, koristim dva skripta:
Gradle skripta za gradnju i Groovy skripta.
Groovy skript sadrži na početku na liniji 2,
инструкција за преузимање ванске зависимости
помоћу зависност менаџера ivy.

#!/usr/bin/env groovy
@Grab("commons-io:commons-io:2.6")

import org.apache.commons.io.FileUtils

static String getSeparator() {
    System.getProperty("file.separator")
}

String from = "${System.getProperty("user.home")}${separator}.config${separator}transmission${separator}torrents"
String to = "${System.getProperty("user.home")}${separator}Documents${separator}torrents_completed"

File fromDlDir = new File("${System.getProperty("user.home")}${separator}Téléchargements")
File fromDir = new File(from)
File toDir = new File(to)

Collection<File> torrentFiles = FileUtils.listFiles(
        fromDir,
        ["torrent"] as String[],
        false)
torrentFiles.addAll(FileUtils.listFiles(
        fromDlDir,
        ["torrent", "torrent.added"] as String[],
        false))


torrentFiles.empty ?: torrentFiles.each { it ->
    FileUtils.copyFileToDirectory(it, toDir)
}
println torrentFiles.size()

У фајлу build.gradle, сада hajde da vidimo kako да уведемо у гармонию
oba menadžera zavisnosti, ivy i Gradle. Sporazum između njih se odnosi na linije:
26, 30, 37, 38 et 39
Dakle mogu da pokrenem moj Groovy skript ručno
i kompilacija Gradle ne ometava @Grab.
Зависностi Groovy скрипте не морају да се наведу у Gradle.
Međutim ne mogu da pokrenem Groovy skript iz Gradle.

plugins {
    id "java"
    id "groovy"
}

repositories {
    mavenCentral()
    jcenter()
}

sourceSets {
    main {
        java { srcDirs = [] }
        groovy { srcDirs =["src/main/java", "src/main/groovy"] }
        resources {
            srcDirs =["src/main/resources"]
        }
    }
    test {
        java { srcDirs = [] }
        groovy { srcDirs =["src/test/java", "src/test/groovy"] }
    }
}

configurations {
    ivy
}

dependencies {
    ivy "org.apache.ivy:ivy:$ivy_version"
    implementation "org.codehaus.groovy:groovy-all:$groovy_version"
}



tasks.withType(GroovyCompile) {
    groovyClasspath += configurations.ivy
}

referenca ticketa nahttps://stackoverflow.com/a/18174033/837404[stackoverflow]

Повезани чланци