Groovy script, grab และ ivy configuration
เผยแพร่เมื่อ 14 August 2019
หัวข้อของตั๋วคือการกำหนดค่าสคริปต์บิลด์ 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]