gradle任务独立压缩多个目录

时间:2017-04-21 20:33:08

标签: gradle build.gradle

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

初始状态:

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

目标状态:

Destination
    project1.zip
    project2.zip

我尝试使用以下代码,但它正在压缩folder1

中的所有内容
task myZip(type: Zip) {
   from 'Folder1'   
   archiveName 'Compress.zip'
   destinationDir file('build')
}

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

1 个答案:

答案 0 :(得分:4)

每个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')
        }
    }
}