我正在尝试创建一个查看文件夹内部的任务,并将该文件夹中的所有文件夹压缩到某个输出文件夹。

初始状态:

Folder1
    -> project1
        ->code //some more files within project1
    -> project2
        ->code

目标状态:
Destination
    project1.zip
    project2.zip

我尝试使用以下代码,但它正在压缩文件夹 1 中的所有内容
task myZip(type: Zip) {
   from 'Folder1'
   archiveName 'Compress.zip'
   destinationDir file('build')
}

我可能需要使用一些包含 project1 和 project2 信息的集合并迭代地压缩到目标文件夹。这种方法有问题。

最佳答案

每个 Gradle Zip 任务只能创建一个 Zip 文件,因为您可以读取 here

因此,您需要创建多个任务。因此,您可以遍历子目录并为每个子目录创建一个新的 Zip 任务。生成的任务可以通过 dependsOn 捆绑在根任务中:

task myZip() {
    file('Folder1').eachDir { sub ->
        dependsOn tasks.create("${name}_${sub.name}", Zip) {
            from sub
            baseName sub.name
            destinationDir file('Destination')
        }
    }
}

关于独立压缩多个目录的gradle任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43551572/

10-10 18:29
查看更多