GZip使用Gradle 5.x及更高版本的每个文件

GZip使用Gradle 5.x及更高版本的每个文件,gradle,gzip,Gradle,Gzip,我们目前有一个Gradle(v4.10.3)构建脚本,它在构建期间压缩每个静态资源。下面是我们的代码片段: tasks.register("gzipJsFiles") { doLast { fileTree(dir: "${buildDir}/classes/main/static/js", include: "**/*.min.js", exclude: "*.gz").eachWithIndex { file, index -> def dynamicTask

我们目前有一个Gradle(v4.10.3)构建脚本,它在构建期间压缩每个静态资源。下面是我们的代码片段:

tasks.register("gzipJsFiles") {
doLast {
    fileTree(dir: "${buildDir}/classes/main/static/js", include: "**/*.min.js", exclude: "*.gz").eachWithIndex { file, index ->
        def dynamicTask = "gzipJs-$file.name"
        task "${dynamicTask}" (type: GzipJsTask) {
            source = file
            dest = Paths.get(file.absolutePath + ".gz").toFile()
        }
        tasks."$dynamicTask".execute()
    }
}}
现在,在Gradle的最新版本中,Task.execute()已被弃用


有没有一种方法可以实现GZip任务,用较新版本的Gradle(5.x或更高版本)分别压缩文件树中的每个文件?

我不知道GzipJsTask来自哪里,但是如果它是来自
Gradle js插件的,你可以从中看出它只是一些Ant命令的包装器。因此,与其在执行时动态创建Gradle任务(不再可能),不如直接运行命令:

doLast {
    fileTree(dir: "${buildDir}/classes/main/static/js", include: "**/*.min.js", exclude: "*.gz").each { file ->
        ant.gzip(src: file.absolutePath, destfile: file.absolutePath + ".gz")
    }
}