Тема тикета — настройка скрипта сборки Gradle.
Я хочу иметь возможность использовать скрипт Groovy без ссылки.
в проекте Gradle, в который я его прикрепил.
Я хочу иметь возможность запустить этот скрипт Groovy вне Gradle
без того, чтобы аннотации Ivy использовались для извлечения внешних зависимостей
не приходят вызвать проблему производительности или компиляции
скрипта сборки Gradle.
Для иллюстрации конфигурации я опираюсь на два скрипта:
скрипт сборки Gradle и скрипт Groovy.
Скрипт Groovy содержит в начале на строке 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 вручную,
и компиляция Gradle не затруднена @Grab.
Зависимости скрипта Groovy не требуется указывать в Gradle.
Однако я не могу запустить скрипт Groovy из 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
}

ссылка на тикет наhttps://stackoverflow.com/a/18174033/837404[stackoverflow]

Articles connexes