从Gradle中的.tar.gz存档获取tarball

时间:2019-02-07 16:17:05

标签: gradle gzip tar gunzip

我有一些.tar.gz归档文件,只想解压缩Tarball来创建.tar-File的sha256-checksum哈希。 (这样做的原因是,归档文件将在以后解压缩并在我们生成补丁文件时重新打包。)

现在,这似乎是一件容易的事,但我陷入了困境。可以使用以下两种Gradle示例:

  1. 获取解包的tarTree(带有Gradle Copy-Task和tarTree(resources.gzip('model.tar.gz'))(来自文档:working with files
  2. 解压缩文件(使用zipTree),不适用于压缩文件

这两种方法都不起作用,因为我需要创建.tar-文件本身的校验和。不幸的是,我不能使用commandLinegunzip,因为这些任务应该同时在Windows和Linux上运行。

我现在能想到的唯一解决方案是将tar.gz解压缩为fileTree并将其重新打包为tar文件,但是我什至不确定校验和是否相同。

真的没有办法直接做到这一点吗?

1 个答案:

答案 0 :(得分:0)

最后我得到了同事的帮助。

使用resources.gzip()(返回ReadableResource),我们可以将生成的InputStream复制到IOUtils.copy.tar文件中:

file("test.tar").withOutputStream { outputFile ->
    IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}

我们还需要添加Apache commons("commons-io:commons-io:2.6")作为依赖项。