在Gradle中从.tar.gz归档文件获取tarball

3
我有一些.tar.gz归档文件,想要只解压Tarball以创建.tar文件的sha256校验和。(原因是归档文件稍后会被解包并重新打包,因为我们正在生成补丁文件。)现在这似乎是一个简单的任务,但我卡住了。有Gradle示例可以:1.获取解压缩的tarTree(使用Gradle Copy-Task和tarTree(resources.gzip('model.tar.gz'))(来自文档: working with files)2.解压缩文件(使用zipTree),不适用于gzipped文件。这两种方法都不起作用,因为我需要创建.tar文件本身的校验和。不幸的是,我不能使用commandLine或gunzip,因为任务应在Windows和Linux上运行。

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

真的没有直接完成这个的方法吗?

1个回答

2
最终我在同事的帮助下解决了这个问题。
使用resources.gzip(),它返回一个ReadableResource,我们可以使用IOUtils.copy将结果InputStream复制到一个.tar文件中。
file("test.tar").withOutputStream { outputFile ->
    IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接