有没有办法使用 gradle 从一个文件夹中解压多个文件?

Is there a way to unzip multiple files from a folder using gradle?

我正在尝试使用 Gradle 将一个文件夹中的多个 .zip 文件解压缩到另一个文件夹中。我可以使用 Gradle 解压缩文件,但我想弄清楚如何在不必指定每个 .zip 文件的名称的情况下解压缩目录中的所有 .zip 文件。我将提供一个我目前拥有的例子。下面的代码没有,我不确定我需要更改什么才能获得所需的结果,即从一个目录中解压缩所有文件并将解压缩的文件放入新目录中。

task unzip(type: Copy) {
    from zipTree("$rootDir/destination_folder") {
        include "**/*.zip"
        into "$new_folder"
    }
}

方法 zipTree 解压缩单个 .zip 文件和 returns 一个 FileTree 以及 .zip 中的所有文件。在您当前的代码中,Gradle 将 "$rootDir/destination_folder" 解释为 .zip 文件的路径。它可能找不到这个 .zip 文件,但即使它可以找到,它也会将包含的文件限制为与 "**/*.zip" 匹配的文件,因此只有 .zip 文件在你的 .zip 文件中被复制。

与其直接使用只能解析单个 .zip 文件的 zipTree,不如从 fileTree 开始,以收集文件夹中的 .zip 文件.然后,您可以对以下每个文件使用 zipTree

task unzip(type: Copy) {
    fileTree(dir: 'sourceDir', includes: ['**/*.zip']).each { zipFile ->
        from zipTree(zipFile)
    }
    into 'targetDir'
}