web-dev-qa-db-ja.com

GradleのmustRunAfterとdependsOnの違いは何ですか?

TaskBがmustRunAfter taskAであるか、またはtaskBがdependsOn taskAであるかに関係なく、taskAが最初に実行され、次にtaskBが実行されるようです。違いは何ですか?

28
Dan B.

例えば:

tasks.create('a')

tasks.create('b').dependsOn('a')

tasks.create('c')

tasks.create('d').mustRunAfter('c')
  • dependsOn-タスクの依存関係を設定します。ここでbを実行するには、aを最初に実行する必要があります。
  • mustRunAfter-タスクの順序を設定します。 dの実行にはcは必要ありません。ただし、cdの両方が含まれている場合、cdの前に実行されます。
26
mkobit

時々それらは同じ効果を持っています。たとえば、taskCがdependsOn taskAおよびtaskBの場合、taskBがdependsOn taskAであるかmustRunAfterであるかは関係ありません-taskCを実行すると、順序はtaskA、taskB、taskCになります。

ただし、taskCがdependsOn taskBのみの場合は、違いがあります。 taskBがdependsOnTaskAである場合、それは上記と同じです-taskA、taskB、taskC。 taskBが単にmustRunAfter taskAでなければならない場合、taskAは実行されず、taskCを実行するとtaskB、次にtaskCが実行されます。

mustRunAfterは実際にはtaskAが実行される場合を意味し、taskBはその後に実行される必要があります。

1
Dan B.