2016-12-09 6 views
1

タスクAとタスクBの2つのタスクがあります。タスクAが実行されるたびにタスクBを実行します。これを行うにはfinalizedByを使用しますが、タスクAが例外をスローした場合でもタスクBを実行すると、この状況を回避する方法があります。例外が発生した場合にgradleが実行されない依存タスク

タスクA {... }

タスクB {... }

A.finalizedBy B

出力:

通常タスクA及びBであろう実行される。

Aに例外がある場合は、Bも実行されます。タスクAが例外をスローした場合、タスクBは実行されたくありません。 official documentationによると

+0

わかりません。 Aが失敗した場合にタスクBを実行しますか?また、問題を示すサンプルデモを提供してください:) – Opal

+0

タスクAが失敗した場合、タスクBを実行したくありません – Shiva

答えて

0

ファイナライザタスクは、最終的なタスクが失敗した場合でも実行されます。

ただし、Aタスクに失敗した場合は、doFirstクロージャを使用してBタスクの実行を停止できます。次に例を示します。ここでは

task A { 
    doLast{ 
     println 'A' 
     throw new IllegalStateException() 
    } 
} 

task B { 
    doFirst { 
     if (A.state.failure != null) { 
      throw new StopExecutionException() 
     } 
    } 
    doLast{ 
     println 'B' 
    } 
} 

A.finalizedBy B 

は、タスクの状態が(doFirst内)だけでB-タスクの実行前にチェックされ、タスクが失敗した場合、それはタスクの実行をスキップするために使用されているStopExecutionExceptionmをスローします。

関連する問題