3

我已经阅读了 stackoverflow 和 gradle 表格,但我仍然很难过。这里的最终目标是,在我复制了一些文件之后,我想设置可写标志——因为 '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”的变体。

试验一:

commandLine = 'chmod'
args = '-R', '+w'

在这种情况下,当我调用 setPermissions 时,我将目标目录附加到“args”。

试验二:

commandLine = 'chmod -R +w'

在这种情况下,当我调用 setPermissions 时,我将目标目录附加到“commandLine”。我还尝试将其设为唯一的“args”值。

试验 3:

commandLine = 'chmod', '-R', '+w'

在这种情况下,当我调用 setPermissions 时,我将目标目录附加到“commandLine”。我还尝试将其设为唯一的“args”值。

那么我在这里做错了什么,Exec 任务无法正常运行,但 Rt.gR.exec() 会?

4

1 回答 1

4

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

PS:您是否尝试过使用Copy.fileMode代替chmod

于 2012-09-27T19:46:43.610 回答