为什么gradle Exec任务不会运行我的命令?

时间:2012-09-27 18:53:48

标签: gradle

我已经阅读了stackoverflow和gradle表单,但我仍然感到难过。这里的最终目标是在复制一些文件后,我想设置可写标志 - 因为' copy'不喜欢覆盖' nix上的只读文件(呵呵...),也不能强制这样做(harumph!)。

以下是我所拥有的概要:

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()

}

我尝试过&#34; setPermissions&#34;。

试用1:

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

在这种情况下,我将目标目录附加到&#34; args&#34;当我打电话给setPermissions。

试用2:

commandLine = 'chmod -R +w'

在这种情况下,我将目标目录附加到&#34; commandLine&#34;当我调用setPermissions时。我也试过把它变成唯一的### args&#34;值。

试用3:

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

在这种情况下,我将目标目录附加到&#34; commandLine&#34;当我调用setPermissions时。我也试过把它变成唯一的### args&#34;值。

所以我在这里做错了,Exec任务不能正常运行,但Rt.gR.exec()会不会?

1 个答案:

答案 0 :(得分:4)

您无法从其他任务调用任务。您必须让一个人依赖另一个,或者从任务操作中调用Project.exec 方法。配置exec方法的语法与Exec任务完全相同。

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