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

Get tarball from .tar.gz archive in gradle

我有一些 .tar.gz-Archives 并且只想解压缩 Tarball 以创建 .tar-File 的 sha256-checksum 散列。 (这样做的原因是存档将被取消并稍后重新打包,因为我们正在生成补丁文件。)

现在这似乎是一项简单的任务,但我被卡住了。有 Gradle 个示例:

  1. 正在解压 tarTree(使用 Gradle 复制任务和 tarTree(resources.gzip('model.tar.gz'))(来自文档:working with files
  2. 解压缩文件(使用 zipTree),这不适用于 gzip 文件

这两种方法都不起作用,因为我需要创建 .tar-File 本身的校验和。不幸的是,我不能使用 commandLinegunzip,因为 Windows 和 Linux.

上的任务应该 运行

我现在能想到的唯一解决方案是将 tar.gz 解包到文件树中,然后将其重新打包到 tar 文件中,但我什至不确定校验和是否是一样。

真的没有办法直接做吗?

终于在同事的帮助下开始工作了。

使用resources.gzip(), which returns a ReadableResource, we can copy the resulting InputStream into a .tar-file with IOUtils.copy

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

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