2015-09-02 57 views
2

我正在寫一個gradle任務。它調用的任務返回3,表示成功運行,而不是3.我該如何去做這件事?gradle執行塊不應該失敗,因爲非零輸出在

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") 
     } 
    } 
} 

它給人的錯誤:

Could not find property 'execResult' on task

我不想創建一個單獨的任務。我希望它在exec塊中。我究竟做錯了什麼?

+1

常見錯誤:不包括 「ignoreExitValue =真」 之間的等號(=)。它應該是 「ignoreExitValue true」 – javajon

回答

2

您將需要指定該任務是Exec類型。這是通過指定任務類型,像這樣

task testExec(type: Exec) { 

} 

在特定情況下完成的,你還需要確保你不要試圖讓execResult直到EXEC已完成通過包裝可以做到這一點在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") 

     } 
    } 
} 
相關問題