Το θέμα του ticket είναι η ρύθμιση ενός script build Gradle.
Θέλω να μπορώ να χρησιμοποιήσω ένα Groovy script χωρίς να κάνω αναφορά
στον προјеκτο Gradle στον οποίο το επισυνάψα
Θέλω να μπορέσω να εκτελέσω αυτό το σενάριο Groovy έξω από το Gradle
χωρίς ότι οι ετοικέτες Ivy για την ανάκτηση εξωτερικής εξαρτήσης
δεν προκαλούν προβλήματα απόδοσης ή μεταγλώττισης
του script build του Gradle
Για να απεικονίσω τη διαμόρφωση, βασίζομαι σε δύο scripts:
ένα Gradle build script και ένα Groovy script.
Το Groovy script περιέχει στην αρχή στη γραμμή 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, ας δούμε πώς να φέρουμε σε αρμονία
Οι δύο διαχειριστές εξαρτήσεων, ivy και Gradle. Η συμφωνία μεταξύ των δύο γίνεται στις γραμμές :
26, 30, 37, 38 et 39
Έτσι μπορώ να τρέχω το Groovy script μου χειροκίνητα,
και η μεταγλώττιση του Gradle δεν εμποδίζεται από το @Grab.
Οι εξαρτήσεις του Groovy script δεν πρέπει να παρέχονται στο Gradle.
Ωμαθέ δεν μπορώ να τρέξω το Groovy script από το 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
}

αναφορά του ticket σεhttps://stackoverflow.com/a/18174033/837404[stackoverflow]

Σχετικά άρθρα