为什么赢了';gradle Exec任务是否运行我的命令?

为什么赢了';gradle Exec任务是否运行我的命令?,gradle,Gradle,我读过stackoverflow和gradle表格,但我仍然感到困惑。这里的最终目标是,在复制一些文件后,我想设置可写标志——因为“复制”不喜欢在“nix”(嗯…)上覆盖只读文件,也不能强制它这样做(哈!) 以下是我的概述: task setPermissions (type : Exec) { executable = 'chmod -R +w' } // ... a little while later ... task('somethingElse') << { /

我读过stackoverflow和gradle表格,但我仍然感到困惑。这里的最终目标是,在复制一些文件后,我想设置可写标志——因为“复制”不喜欢在“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时将目标目录附加到“args”

试用版2:

commandLine = 'chmod'
args = '-R', '+w'
commandLine = 'chmod -R +w'
commandLine = 'chmod', '-R', '+w'
在这种情况下,当我调用setPermissions时,我将目标目录附加到“commandLine”。我还尝试将其作为唯一的“args”值

试用版3:

commandLine = 'chmod'
args = '-R', '+w'
commandLine = 'chmod -R +w'
commandLine = 'chmod', '-R', '+w'
在这种情况下,当我调用setPermissions时,我将目标目录附加到“commandLine”。我还尝试将其作为唯一的“args”值


那么我在这里做错了什么,一个Exec任务不能正常运行,但是Rt.gR.Exec()会正常运行?

您不能从另一个任务调用任务。您必须使一个依赖于另一个,或者从任务操作调用该方法。配置
exec
方法的语法与
exec
任务的语法完全相同


PS:您是否尝试使用而不是
chmod

Peter,谢谢。我来看看Project.exec。我在Copy.fileMode上阅读。我的理解是,这更像是说“chmod 755”对应于“+w”。我只想对所有文件启用“写入”,而不是篡改读取或执行。我是否误解了fileMode的工作原理?如果您想执行
+w
,则不能使用
fileMode
。我会检查是否有蚂蚁任务。