我有一些.tar.gz
-Archives,只想解压缩压缩包以创建.tar
-File的sha256校验和哈希。(这样做的原因是存档将在稍后解压缩并重新打包,因为我们正在生成补丁文件。
现在这似乎是一件容易的事,但我被困住了。有以下任一 Gradle 示例:
- 获取解压缩的
tarTree
(使用 Gradle 复制任务和tarTree(resources.gzip('model.tar.gz'))
(来自文档:处理文件( - 解压缩文件(带
zipTree
(,这不适用于 gzip 压缩的文件
这两种方法都不起作用,因为我需要创建 .tar
-File 本身的校验和。不幸的是,我不能使用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"
(作为依赖项。