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

从gradle的.tar.gz存档中获取tarball,gradle,gzip,tar,gunzip,Gradle,Gzip,Tar,Gunzip,我有一些.tar.gz-档案,只想将Tarball解包以创建.tar-文件的sha256校验和散列。(这样做的原因是,存档将在稍后取消并重新打包,因为我们正在生成修补程序文件。) 现在这似乎是一项简单的任务,但我被卡住了。以下是Gradle的例子: 获取解包的tarTree(带有Gradle复制任务和tarTree(resources.gzip('model.tar.gz'))(来自文档:) 解压缩文件(使用zipTree),这不适用于gzip文件 这两种方法都不起作用,因为我需要创建.tar-

我有一些
.tar.gz
-档案,只想将Tarball解包以创建
.tar
-文件的sha256校验和散列。(这样做的原因是,存档将在稍后取消并重新打包,因为我们正在生成修补程序文件。)

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

  • 获取解包的
    tarTree
    (带有Gradle复制任务和
    tarTree(resources.gzip('model.tar.gz'))
    (来自文档:)
  • 解压缩文件(使用
    zipTree
    ),这不适用于gzip文件
  • 这两种方法都不起作用,因为我需要创建
    .tar
    -文件本身的校验和。不幸的是,我不能使用
    命令行
    gunzip
    ,因为任务应该在Windows和Linux上运行

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


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

    最后,我在一位同事的帮助下让它工作起来

    使用,它返回一个
    可读资源
    ,我们可以将结果
    输入流
    复制到一个
    .tar
    -文件中,其中包含:

    我们还需要添加apachecommons(
    “commons-io:commons-io:2.6”
    )作为依赖项

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