在 gradle 中,是否有任何理由不使用 Groovy 的 .execute() 函数来运行命令行进程?我知道“gradle”方式是从 Exec 到 commandLine。但感觉 .execute() 提供了更多的灵活性,例如能够在 doLast 块中使用。
Gradle 的exec与 Groovy 的有很大不同.execute()。Gradleexec会将输出通过管道传输到 stdout 并等待命令完成,然后再执行下一个任务。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()
}
Run Code Online (Sandbox Code Playgroud)
然后在你的任务中做这样的事情:
task someTask() {
doLast {
execute("cmd", "/c", "echo Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
即使在这种情况下,如果任务失败,您的构建也不会失败!
tl;dr 使用 Gradle 的 exec()
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |