我正在尝试创建一个查看文件夹内部的任务,并将该文件夹中的所有文件夹压缩到某个输出文件夹。
初始状态:
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/