gpt4 book ai didi

Gradle,任务类型 : Exec - commandLine not work in onLast

转载 作者:行者123 更新时间:2023-12-03 03:20:05 26 4
gpt4 key购买 nike

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

task dir(type: Exec) {
def adbCommand = ["dir", "*.*"]
commandLine adbCommand
standardOutput = new ByteArrayOutputStream()
doLast {
println ("result = " + standardOutput)
}
}

这是工作。好的。但是当我把它放在 onLast 部分时它不起作用:

task dir(type: Exec) {
doLast {
def adbCommand = ["dir", "*.*"]
commandLine adbCommand
standardOutput = new ByteArrayOutputStream()
println ("result = " + standardOutput)
}
}

我得到错误:

失败:构建失败,出现异常。

  • 出了什么问题:

任务 ':app:dir' 执行失败。

execCommand == null!

最佳答案

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

在您的第一个示例中,由于配置发生在配置阶段,因此一切正常。您的第二个示例尝试在 doLast 闭包内配置任务 - 就在任务执行完之后。

如果你真的需要在 doLast 中执行一些东西,你可以使用这样的东西,而不需要创建特殊的任务:

task someTaskName {
doLast {
exec {
commandLine adbCommand
}
}
}

这里是exec-specification,用于执行一些命令,它是同时配置和执行的。

关于Gradle,任务类型 : Exec - commandLine not work in onLast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com