私には次のような2つのカスタムタスクがあります-
task taskA(type: SomeTaskA) {
....
}
task taskB(type: SomeTaskB, dependsOn: 'taskA') {
....
}
taskAはファイルを生成し、そのファイルに対していくつかの操作を実行します。taskBは、taskAによって生成されたファイルに対していくつかの操作も実行します。両方のタスクを個別に実行できます。
gradleコマンドが完了したときにこのファイルを削除する必要があります。つまり、gradle taskAを実行すると、taskAが完了したときにファイルが削除され、gradle taskBを実行すると、taskBが完了したときにファイルが削除されます。
doLastブロックを追加し、そこに削除ロジックを追加することで最初の部分を実現できますが、taskBを実行すると、操作を実行するファイルがありません(taskA doLastがすでにファイルを削除しているため)。
それでは、taskBを実行したときにtaskA doLastを停止するのですか、それともこれを達成する他の方法ですか?
ファイルの削除を処理するための専用の「クリーンアップ」タスクを作成し、両方のタスクtaskA
を作成して、このタスクtaskB
で終了することができますcleanup
。
task cleanup{
doLast{
// DELETE the file
}
}
taskA.finalizedBy cleanup
taskB.finalizedBy cleanup
このように、taks AまたはBを実行すると、ファイルは常に削除されます。これtaskB
により、タスクによってファイルが削除される前に、ファイルが確実に実行されますcleanup
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加