从 gradle 中的 .tar.gz 存档获取 tarball
Get tarball from .tar.gz archive in gradle
我有一些 .tar.gz
-Archives 并且只想解压缩 Tarball 以创建 .tar
-File 的 sha256-checksum 散列。 (这样做的原因是存档将被取消并稍后重新打包,因为我们正在生成补丁文件。)
现在这似乎是一项简单的任务,但我被卡住了。有 Gradle 个示例:
- 正在解压
tarTree
(使用 Gradle 复制任务和 tarTree(resources.gzip('model.tar.gz'))
(来自文档:working with files)
- 解压缩文件(使用
zipTree
),这不适用于 gzip 文件
这两种方法都不起作用,因为我需要创建 .tar
-File 本身的校验和。不幸的是,我不能使用 commandLine
或 gunzip
,因为 Windows 和 Linux.
上的任务应该 运行
我现在能想到的唯一解决方案是将 tar.gz
解包到文件树中,然后将其重新打包到 tar 文件中,但我什至不确定校验和是否是一样。
真的没有办法直接做吗?
终于在同事的帮助下开始工作了。
使用resources.gzip()
, which returns a ReadableResource
, we can copy the resulting InputStream
into a .tar
-file with IOUtils.copy:
file("test.tar").withOutputStream { outputFile ->
IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}
我们还需要添加 Apache commons ("commons-io:commons-io:2.6"
) 作为依赖项。
我有一些 .tar.gz
-Archives 并且只想解压缩 Tarball 以创建 .tar
-File 的 sha256-checksum 散列。 (这样做的原因是存档将被取消并稍后重新打包,因为我们正在生成补丁文件。)
现在这似乎是一项简单的任务,但我被卡住了。有 Gradle 个示例:
- 正在解压
tarTree
(使用 Gradle 复制任务和tarTree(resources.gzip('model.tar.gz'))
(来自文档:working with files) - 解压缩文件(使用
zipTree
),这不适用于 gzip 文件
这两种方法都不起作用,因为我需要创建 .tar
-File 本身的校验和。不幸的是,我不能使用 commandLine
或 gunzip
,因为 Windows 和 Linux.
我现在能想到的唯一解决方案是将 tar.gz
解包到文件树中,然后将其重新打包到 tar 文件中,但我什至不确定校验和是否是一样。
真的没有办法直接做吗?
终于在同事的帮助下开始工作了。
使用resources.gzip()
, which returns a ReadableResource
, we can copy the resulting InputStream
into a .tar
-file with IOUtils.copy:
file("test.tar").withOutputStream { outputFile ->
IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}
我们还需要添加 Apache commons ("commons-io:commons-io:2.6"
) 作为依赖项。