从 gradle .tar.gz存档中获取压缩包



我有一些.tar.gz-Archives,只想解压缩压缩包以创建.tar-File的sha256校验和哈希。(这样做的原因是存档将在稍后解压缩并重新打包,因为我们正在生成补丁文件。

现在这似乎是一件容易的事,但我被困住了。有以下任一 Gradle 示例:

  1. 获取解压缩的tarTree(使用 Gradle 复制任务和tarTree(resources.gzip('model.tar.gz'))(来自文档:处理文件(
  2. 解压缩文件(带 zipTree (,这不适用于 gzip 压缩的文件

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

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

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

最后,

我在同事的帮助下让它工作。

使用 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"(作为依赖项。

最新更新