Guy*_*ord 2 file-permissions gradle
我正在尝试解决一个问题,即我的构建中的依赖项是一个包含一些只读文件的 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 进行提取。
这似乎不是一个不合理的尝试,但我显然做错了什么。有什么建议?
task stageZip(type: Sync) {
from zipTree('data/data.zip')
into 'staging'
fileMode 0644
}
Run Code Online (Sandbox Code Playgroud)
我已经把工作示例(我理解这个问题)这里。
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |