doLast部分的exec块来自哪里?

时间:2018-05-01 22:24:32

标签: gradle

我遇到了一些片段:

task senchaCmdBuild {
  doLast {
    exec {
      workingDir 'src/main/app/MYAPP'
      commandLine 'cmd', 'c', 'sencha app build'
    }
    exec {
      workingDir 'src/main/app/MYOTHERAPP'
      commandLine 'cmd', 'c', 'sencha app build'
    }
  }
}

它是类型化任务的替代语法

task someTypedTask(type: Exec) {
    commandLine 'ls'
}

为什么没有类型声明会有效? 我们有一些文件吗?

2 个答案:

答案 0 :(得分:1)

您在doLast中使用的execProject界面中定义。文档说明:

  

ExecResult exec(Action action)执行外部命令   给定的操作配置ExecSpec,用于启动进程   此方法将一直阻塞,直到进程终止,并返回其结果。

答案 1 :(得分:1)

它只是由Project实例定义的method。它执行闭包直接指定的命令,因此可用于在配置阶段运行命令。在给定的示例中,它用于在单个任务中执行两个命令(在执行阶段通过doLast), imho 应该被视为不良做法。

还有其他方法直接执行并与任务类型共享配置闭包,即copydeletejavaexec