Groovy 脚本,grab 和 ivy 配置
Publié le 14 August 2019
工单的主题是配置 Gradle 构建脚本。
我想能够使用一个 Groovy 脚本而不引用
我附加的 Gradle 项目。
我想能够在 Gradle 之外运行此 Groovy 脚本
没有外部依赖检索的 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 中提供。
不过我不能从 Gradle 启动 Groovy 脚本。
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[�栈溢出]