zip文件夹的内容

时间:2015-11-23 09:02:41

标签: gradle

我想压缩包文件夹的内容。 如何在gradle任务中执行此操作?

我想这样做

task publishAll << {
    new File('src/main/resources/com/domain/application/').eachDir() {
        dir -> processFolder(dir)
    }
}

def processFolder(dir) {
    println "prepare folder: " + dir

似乎返回第一级子文件夹很好。 但是如何压缩dir文件夹?

1 个答案:

答案 0 :(得分:1)

您可以使用Zip类型创建自定义任务,并使用FileTree将所有子文件夹包含在zip-archive中,例如:

task publishAll(type: Zip){
    from fileTree(dir: 'src/main/resources/com/domain/application/')
}

如果您想另外打印文件名,可以将其修改为:

from fileTree(dir: 'src/main/resources/com/domain/application/').each {println it.name}

更新:要将每个文件夹归档到单独的zip文件中,您可以使用您的解决方案遍历目录并添加ant.zip任务,以打包它们,如:

task publishAll << {
    new File('src/main/resources/com/domain/application/').eachDir {
        ant.zip(destfile: it.name+'.zip', basedir: it.path){

        }
    }
}