Gradle,任务类型:Exec-命令行不能在onLast中工作

Gradle,任务类型:Exec-命令行不能在onLast中工作,gradle,Gradle,我想在gradle任务的命令行中执行一些命令(例如,在目录中打印所有文件): 这是工作。好啊但当我把它放在最后一节时,它不起作用: task dir(type: Exec) { doLast { def adbCommand = ["dir", "*.*"] commandLine adbCommand standardOutput = new ByteArrayOutputStream() println ("result = " + standardOut

我想在gradle任务的命令行中执行一些命令(例如,在目录中打印所有文件):

这是工作。好啊但当我把它放在最后一节时,它不起作用:

task dir(type: Exec) {
  doLast {
    def adbCommand = ["dir", "*.*"]
    commandLine adbCommand
    standardOutput = new ByteArrayOutputStream()
    println ("result = " + standardOutput)
  }
}
我得到一个错误:

失败:生成失败,出现异常

  • 出了什么问题:
任务“:app:dir”的执行失败

execCommand==null


原因是,应该在构建的配置阶段配置
Exec
任务,否则您的任务将不会配置并失败

在第一个示例中,由于配置发生在Configurationion阶段,所以一切都正常工作。第二个示例尝试在执行任务之后,在
doLast
closure中配置任务

如果确实需要在
doLast
中执行某些操作,则可以使用类似的操作,而无需创建特殊任务:

task someTaskName {
    doLast {
        exec {
            commandLine adbCommand
        }
    }
}
下面是用于执行某些命令的
exec
-规范,它是同时配置和执行的。

可能重复的
task someTaskName {
    doLast {
        exec {
            commandLine adbCommand
        }
    }
}