gpt4 book ai didi

Gradle运行命令行进程: execute() vs commandLine

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

在 gradle 中,有什么理由不使用 Groovy 的 .execute() 函数来运行命令行进程?我知道“gradle”方式是来自 Exec 的命令行。但感觉 .execute() 提供了更多的灵 active ,例如能够在 doLast block 中使用。

最佳答案

Gradle 的 exec 与 Groovy 的 .execute() 有很大不同。 Gradle 的 exec 会将输出通过管道传输到标准输出并等待命令完成,然后再执行下一个任务。 Groovy 的 .execute() 只返回一个 Process .该进程将在后台并行运行。除非您寻找它等,否则您不会看到输出。

要使 Groovy 的 [].execute() 像 Gradle 的 exec 一样工作,您必须定义如下方法:

void execute(String... args) {
println "Executing $args...";
def proc = args.execute();
proc.in.eachLine {line -> println line}
proc.err.eachLine {line -> println 'ERROR: ' + line}
proc.waitFor()
}

然后在你的任务中做这样的事情:

task someTask() {
doLast {
execute("cmd", "/c", "echo Hello World!");
}
}

即使在这种情况下,如果任务失败,您的构建也不会失败!

tl;dr 使用 Gradle 的 exec()

关于Gradle运行命令行进程: execute() vs commandLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752147/

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