gradle - 从 .tar.gz 归档文件中获取 tarball
问题描述
我有一些.tar.gz
-Archives 并且只想解压缩 Tarball 以创建 -File 的 sha256-checksum 哈希.tar
。(这样做的原因是存档将在稍后解压缩并重新打包,因为我们正在生成补丁文件。)
现在这似乎是一项容易的任务,但我被困住了。有以下 Gradle 示例:
- 解压
tarTree
(使用 Gradle Copy-Task 和tarTree(resources.gzip('model.tar.gz'))
(来自文档:使用文件) - 解压缩文件(带
zipTree
),这不适用于 gzip 文件
这两种方法都不起作用,因为我需要创建.tar
-File 本身的校验和。不幸的是,我不能使用commandLine
或者gunzip
因为任务应该在 Windows 和 Linux 上运行。
我现在能想到的唯一解决方案是将其解tar.gz
压缩到 fileTree 并将其重新打包到 tar 文件中,但我什至不确定校验和是否相同。
真的没有办法直接做到这一点吗?
解决方案
最后我在同事的帮助下让它工作了。
使用resources.gzip()
返回 a 的ReadableResource
,我们可以将结果复制InputStream
到带有IOUtils.copy.tar
的-file 中:
file("test.tar").withOutputStream { outputFile ->
IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}
我们还需要添加 Apache commons ( "commons-io:commons-io:2.6"
) 作为依赖项。
推荐阅读
- ios - NavigationLink 跳到一个特定的导航,没有菜单屏幕 - 同样,传递给不带参数的调用的参数
- kernel - 什么是最小的可引导内核示例?
- javascript - 为登录用户显示不同的导航栏
- excel - 有没有办法根据另一个单元格的位置来引用excel中的一个单元格?
- rust - 在 amethyst hello world 示例 Arch Linux 中未解决的 xcb 导入
- php - 通过 sanctum 令牌获取用户
- python - Django model.py中的一些用户字段在注册后没有出现在数据库中
- c# - 无法使用模拟器上传文件,控制器有问题
- html - 无法将悬停时的边距应用于 li
- java - 使用 owlapi 推断平等的语义(OWL 2 RL)