2015-12-12 6 views
12

を行わないようにしたい:のGradleのexecタスクは非ゼロの終了値を返し、ビルドに失敗したが、私は、私は、のようなものはかなりデフォルトの方法で設定のexecタスクを持って失敗し、代わりに別のタスク

task myTask(type:Exec) { 

    workingDir '.' 

    commandLine './myscript.sh' 

    doLast { 
     if(execResult == 0) { 
      //one thing 
     } else { 
      //another thing 
     } 
    } 
} 

をしかし残念ながら、スクリプトによってエラーがスローされたときにdoLastブロックを実行することはありません。代わりにそれをスキップし、ビルド全体で失敗します

':project:myTask'タスクの実行に失敗しました。 プロセス「コマンド」./myscript.sh「」ゼロ以外の終了値1" で終了し

私には役に立たないのです。ゼロ以外の終了値が私であるとmyscript.shの全体的なアイデアは、仕上げ

+0

gradle dslは単純なグルーヴィースクリプトです。あなたの仕事にはtry catchブロックを書くことができます – AdamSkywalker

答えて

21

TL; DR - ignoreExitValue = trueを使用

を使用して、ビルドに失敗して結果を取得してアクションを実行するためには、何をする必要がありますか?

ドキュメントを50回目に読んだところ、デフォルトでfalseに設定されているignoreExitValueというプロパティがあることがわかりましたが、それをtrueに設定するとdoLastブロックで独自のタスクを実行できます。

task myTask(type:Exec) { 

    workingDir '.' 

    commandLine './myscript.sh' 

    ignoreExitValue true 

    doLast { 
     if(execResult == 0) { 
      //one thing 
     } else { 
      //another thing 
     } 
    } 
} 
+0

execResultは何ですか?私はドキュメントを見て、それを見つけることができませんでした。 – Trejkaz

+0

私はexecResultが私が作成した変数であり、タスクの結果をその変数に割り当てていたと確信しています。しかし、これはほぼ2年前のことでしたので、私は覚えていません。 –

+1

私はそれを理解したと思います。 ExecにはgetExecResult()がありますが、JavaExecにはありません。私たちはJavaExecを使用しているので、使用することはできません。 :( – Trejkaz