我已经阅读了 stackoverflow 和 gradle forms,但我仍然感到困惑。这里的最终目标是在我复制一些文件后,我想设置可写标志——因为'copy'不喜欢覆盖'nix上的只读文件(呵呵......),也不能强制它这样做(哼!)。
这是我所拥有的大纲:
task setPermissions (type : Exec) {
executable = 'chmod -R +w'
}
// ... a little while later ...
task('somethingElse') << {
// ... unrelated stuff ...
def String targetDir = "$aVar/theTarget"
// >> TASK CALL <<
setPermissions {
commandLine = [executable + " $targetDir"]
}
// but that doesn't work... this does...
proc = Runtime.getRuntime().exec("chmod -R +w $deployDir")
proc.waitFor()
}
我尝试了“setPermissions”的变体。
试验 1:
commandLine = 'chmod'
args = '-R', '+w'
在这种情况下,我在调用 setPermissions 时将目标目录附加到“args”。
试验 2:
commandLine = 'chmod -R +w'
在这种情况下,我在调用 setPermissions 时将目标目录附加到“commandLine”。我还尝试将其设为唯一的“args”值。
试验 3:
commandLine = 'chmod', '-R', '+w'
在这种情况下,我在调用 setPermissions 时将目标目录附加到“commandLine”。我还尝试将其设为唯一的“args”值。
那么,Exec 任务无法正常运行,但 Rt.gR.exec() 可以正常运行,我做错了什么?
最佳答案
您不能从另一个任务中调用一个任务。你必须让一个依赖另一个,或者调用 Project.exec 方法 来自任务操作。配置 exec
方法的语法与配置 Exec
任务的语法完全相同。
PS:你试过用Copy.fileMode吗?而不是 chmod
?
关于gradle - 为什么 gradle Exec 任务不会运行我的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628235/