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

标签 gradle gzip tar gunzip

我有一些 .tar.gz-文件,只想解压 Tarball 以创建 .tar-文件的 sha256 校验和哈希。 (这样做的原因是,当我们生成补丁文件时,存档将被解压并重新打包。)

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

  1. 获取解压的 tarTree (使用 Gradle Copy-Task 和 tarTree(resources.gzip('model.tar.gz')) (来自文档: working with files )
  2. 解压缩文件(使用 zipTree),不适用于 gzip 压缩文件

这两种方法都不起作用,因为我需要创建 .tar 文件本身的校验和。不幸的是,我无法使用 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") 作为依赖项。

关于gradle - 从 gradle 中的 .tar.gz 存档获取 tarball,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54577679/

相关文章:

gradle - 将 Sonar 配置属性外部化到用户主页中的 gradle.properties 文件

testing - 使用 Gradle 进行集成测试时运行服务器

html - 我可以 gzip 压缩我所有的 html 内容(页面)吗?

linux - 查找文件是否存在于多个 gzip 压缩包中的最快方法?

java - apache commons 压缩的 Tar 问题

encryption - 使用 OpenSSL 进行 Tar 和加密,并将结果直接转储到 ssh 服务器

gradle - Gradle,如何强制选择第三方依赖关系的最新版本

gradle - gradle中的复杂打包,用于具有不同二进制文件的服务器

protocol-buffers - Protobuf 消息可以以 gzip 魔数(Magic Number)开头吗?

reactjs - 无法在 webpack 中压缩为 gzip