使用tar任务为Gradle中的每个文件夹创建tar.gz

使用tar任务为Gradle中的每个文件夹创建tar.gz,gradle,groovy,Gradle,Groovy,我有一个项目的文件夹结构如下 blue/folder1 blue/folder2 red/folder3 red/folder4 在Gradle中,我想分别对这些文件夹加上焦油,以便输出如下所示: build/ tar/ blue/ folder1.tar.gz folder2.tar.gz red/ folder3.tar.gz folder4.tar.gz 可能吗?我将如何执行此操作?您知道如何从“maven publi

我有一个项目的文件夹结构如下

blue/folder1
blue/folder2
red/folder3
red/folder4
在Gradle中,我想分别对这些文件夹加上焦油,以便输出如下所示:

build/
  tar/
    blue/
      folder1.tar.gz
      folder2.tar.gz
    red/
      folder3.tar.gz
      folder4.tar.gz

可能吗?我将如何执行此操作?

您知道如何从“maven publish”访问此任务吗?如果我尝试使用工件“tarTask”的传统MavenPublication,它会说
无法为org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler类型的对象获取未知属性“tarTask”。
要获取.gz,您不需要添加
compression=compression.GZIP
作为tar任务的参数之一吗?否则,您只是在用.gz扩展名制作一个tarball。
apply plugin: 'base'

['blue', 'red'].each { colour -> 
    file(colour).listFiles().each { File folder ->
        if (folder.directory) {
           Task tarTask = tasks.create(name: "tar${colour.capitalize()}${folder.capitalize()}", type: Tar) {
               from folder
               destinationDir = "${buildDir}/${colour}"
               archiveName = "${folder}.tar"
           }
           assemble.dependOn tarTask
        }
    }
}