Finalizer tasksを使うと、タスク終了時に指定したタスクを実行出来るようになる。
例
この例の場合、hoge1タスクが終了するとhoge2タスクが実行されます。
task hoge1 << { println 'hoge1' } task hoge2 << { println 'hoge2' } hoge1.finalizedBy hoge2
- 実行結果
:hoge1 hoge1 :hoge2 hoge2 BUILD SUCCESSFUL
タスクが失敗した場合の動作
Finalizer tasksは、必ず実行されるので下の例のように例外がタスクがfailした場合でも実行されます。
task hoge1 << { println 'hoge1' throw new RuntimeException('異常終了') } task hoge2 << { println 'hoge2' } hoge1.finalizedBy hoge2
- 実行結果
:hoge1 hoge1 :hoge1 FAILED :hoge2 hoge2 FAILURE: Build failed with an exception.
複数のタスクを実行したい場合
複数のタスクを指定した順に実行させたい場合には、finalizedByを複数定義する。
例えば、以下のように定義した場合、hoge3>hoge2の順にタスクが実行されることは保証出来ません。(順序を保証しないのであればこれで問題はありません。)
hoge1.finalizedBy hoge3, hoge2
以下のようにfinalizedByを複数定義してあげましょう。
hoge1.finalizedBy hoge3 hoge3.finalizedBy hoge2
これで、hoge1の後にhoge3>hoge2の順にタスクが実行されます。
:hoge1 hoge1 :hoge1 FAILED :hoge3 hoge3 :hoge2 hoge2
おわり。