小编Guy*_*ord的帖子

在 gradle Copy 任务中动态设置文件权限

我正在尝试解决一个问题,即我的构建中的依赖项是一个包含一些只读文件的 zip 文件。当我将该 zip 作为构建的一部分解压缩时,我以临时文件夹中的只读文件结束,它们会阻止任务在未来运行,因为它们无法被覆盖。

直到有一种在 gradle 复制任务中强制覆盖的方法之前,我一直试图找到一种方法来更改只读文件的文件模式,这种方式不会从那些需要它的文件中删除执行位。

我想出了这个:

task stageZip(type: Copy) {
  from({ zipTree(zipFile) })
  into stagingFolder

  eachFile {
    println "${it.name}, oldMode: ${Integer.toOctalString(it.mode)}, newMode: ${Integer.toOctalString(it.mode | 0200)}"
    fileMode it.mode | 0200
  }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。如果我注释掉 fileMode 行,则 println 会正确列出旧文件模式和新文件模式,并为所有文件启用写入位。如果我将代码保留原样,那么 zip 中的所有文件都将使用第一个文件的 newMode 进行提取。

这似乎不是一个不合理的尝试,但我显然做错了什么。有什么建议?

file-permissions gradle

2
推荐指数
1
解决办法
3248
查看次数

标签 统计

file-permissions ×1

gradle ×1