หัวข้อของตั๋วคือการกำหนดค่าสคริปต์บิลด์ Gradle
ฉันต้องการที่จะสามารถใช้สคริปต์ Groovy โดยไม่ต้องอ้างอิง
ในโปรเจ็กต์ Gradle ที่ฉันได้แนบมันไว้.
ฉันต้องการความสามารถในการรันสคริปต์ Groovy นี้โดยไม่ใช้ Gradle
โดยที่ไม่มีคำอธิบาย ivy สำหรับการดึงความขึ้นต่อภายนอก
ไม่ มา ก่อ ปัญหาด้านประสิทธิภาพหรือการคอมไพล์
ของสคริปต์การ build 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]

บทความที่เกี่ยวข้อง