我正在写一个gradle任务。它调用的任务返回3表示成功运行而不是3.如何进行此操作?
task copyToBuildShare(){
def robocopySourceDir = "build\\outputs\\apk"
def cmd = "robocopy "+ robocopySourceDir + " C:\\TEST *.* /MIR /R:5 2>&1"
exec {
ignoreExitValue = true
workingDir '.'
commandLine "cmd", "/c", cmd
if (execResult.exitValue == 3) {
println("It probably succeeded")
}
}
}
它给出错误:
无法找到属性' execResult'在任务上
我不想创建单独的任务。我希望它在exec块中。我做错了什么?
答案 0 :(得分:2)
您需要指定此任务的类型为Exec。这是通过指定任务类型来完成的
task testExec(type: Exec) {
}
在您的特定情况下,您还需要确保在exec完成之前不要尝试获取execResult,这可以通过将检查包装在doLast中来完成。
task testExec(type: Exec) {
doLast {
if (execResult.exitValue == 3) {
println("It probably succeeded")
}
}
}
以下是执行ls
并检查其返回值
task printDirectoryContents(type: Exec) {
workingDir '.'
commandLine "sh", "-c", "ls"
doLast{
if (execResult.exitValue == 0) {
println("It probably succeeded")
}
}
}
答案 1 :(得分:2)
project.exec()的返回值类型为ExecResult。
def result = exec {
ignoreExitValue true
executable "cmd"
args = ["/c", "exit", "1"]
}
println "exit value:"+result.getExitValue()
参考此处: