我有一些 .tar.gz
-文件,只想解压 Tarball 以创建 .tar
-文件的 sha256 校验和哈希。 (这样做的原因是,当我们生成补丁文件时,存档将被解压并重新打包。)
现在这似乎是一项简单的任务,但我被困住了。有以下 Gradle 示例:
- 获取解压的
tarTree
(使用 Gradle Copy-Task 和tarTree(resources.gzip('model.tar.gz'))
(来自文档: working with files ) - 解压缩文件(使用
zipTree
),不适用于 gzip 压缩文件
这两种方法都不起作用,因为我需要创建 .tar
文件本身的校验和。不幸的是,我无法使用 commandLine
或 gunzip
,因为任务应该在 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"
) 作为依赖项。
关于gradle - 从 gradle 中的 .tar.gz 存档获取 tarball,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54577679/