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

标签 gradle

我已经阅读了 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/

相关文章:

spring-boot - 在Spring中保存以前的身份验证

gradle - 在Gradle中访问项目的配置关闭

gradle - 我在哪里可以把我的自定义任务类放在 Gradle 中

android - 为什么gradle错误地覆盖了AndroidManifest.xml?

android - 如何在Android Studio中更改默认语言(国际非编程)

java - 编译失败 - 无法从 https ://maven.repository.redhat.com/ga/javax/servlet/javax.servlet-api/maven-metadata.xml 加载 Maven 元数据

java - 将文件添加到Kotlin DSL中的Gradle sourceSets

Android:如何将 AAR 的依赖项构建到 APK 中?

android - 任务 ':app:transformResourcesWithMergeJavaResForDebug'的执行失败。 >

Gradle 和 Flyway : Unable to obtain inputstream for resource