موضوع التذكرة هو تكوين سكريبت بناء Gradle.
أريد أن أستطيع استخدام برنامج نصي Groovy دون الحاجة للإشارة
إلى مشروع Gradle الذي ربطته به
أريد أن أكون قادرًا على تشغيل هذا البرنامج النصي Groovy خارج Gradle
بدون أن تكون تعليقات ivy لاسترداد الاعتمادات الخارجية
لا يتسببون في مشكلات الأداء أو التجميع
من سكريبت بناء Gradle.
لإيضاح الاعتماد على التكوين، أستند إلى سكريبتين:
سكريبت بناء Gradle وسكريبت 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[ستاك أوفرفلو]

Articles connexes