L’argomento del ticket è la configurazione di uno script di build Gradle.
Voglio poter utilizzare uno script Groovy senza fare riferimento
al progetto Gradle al quale l’ho allegato
Voglio avere la possibilità di eseguire questo script Groovy fuori da Gradle
senza che le annotazioni Ivy di recupero delle dipendenze esterne
non causano problemi di prestazioni o di compilazione
del script di build Gradle.
Per illustrare la configurazione mi baso su due script:
uno script di build Gradle e uno script Groovy.
Lo script Groovy contiene all’inizio alla riga 2,
un’istruzione per estrarre una dipendenza esterna
utilizzando il gestore di dipendenze 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()

Nel file build.gradle, ora vediamo come armonizzare
i due gestori delle dipendenze, ivy e Gradle. L’accordo tra i due avviene sulle righe:
26, 30, 37, 38 et 39
Così posso avviare manualmente il mio script Groovy,
e la compilazione di Gradle non è ostacolata da @Grab.
Le dipendenze dello script Groovy non devono essere fornite in Gradle.
D’altra parte non posso avviare lo script Groovy da 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
}

riferimento del ticket suhttps://stackoverflow.com/a/18174033/837404[stackoverflow]

Articoli correlati