我正在尝试在我的项目中使用 Windows 上的gradle构建 tar存档。
task buildTarball(dependsOn: filterResources, type: Tar) {
from "${project.buildDir}/resources"
destinationDir project.buildDir
archiveName = project.ext.internetTarballName
compression = Compression.GZIP
}
这很好用,除了在现有目录下的 unix计算机上解压缩存档时会出错:
tar: config: Cannot utime: Permission denied
tar: Exiting with failure status due to previous errors
config
是压缩包中的目录。使用--no-overwrite-dir
调用unpack命令即可。
Gradle使用我的 Windows用户名作为生成的存档中所有文件和目录的所有者。我怀疑这是错误的原因。如何使用gradle将所有者信息从tarball中删除?
答案 0 :(得分:1)
根本问题不是gradle,而是目标环境。 config
目录归root所有,禁止tar
覆盖创建,修改和访问时间戳。
不过,上述问题中发布的消息不是错误。此消息后,Tar继续解压缩对象。通过将--no-overwrite-dir
开关附加到tar -x
命令可以轻松避免该消息。