Task dependencies
Remarks#
doLast
Note, that in a gradle 3.x more idiomatic way task definition: using explicit doLast{closure} notation instead “leftShift”(<<) operator preferable.(leftShift has been deprecated in a gradle 3.2 is scheduled to be removed in gradle 5.0.)
task oldStyle << {
println 'Deprecated style task'
}is equivalent to:
task newStyle {
doLast {
println 'Deprecated style task'
}
}Adding dependencies using task names
We can change the tasks execution order with the dependsOn method.
task A << {
println 'Hello from A'
}
task B(dependsOn: A) << {
println "Hello from B"
}Adding `dependsOn: causes:
- task B depends on task A
- Gradle to execute
Atask everytime before theBtask execution.
And the output is:
> gradle -q B
Hello from A
Hello from BAdding dependencies from another project
project('projectA') {
task A(dependsOn: ':projectB:B') << {
println 'Hello from A'
}
}
project('projectB') {
task B << {
println 'Hello from B'
}
}To refer to a task in another project, you prefix the name of the task with the path of the project it belongs to :projectB:B.
And the output is:
> gradle -q B
Hello from A
Hello from BAdding dependency using task object
task A << {
println 'Hello from A'
}
task B << {
println 'Hello from B'
}
B.dependsOn AIt is an alternative way to define the dependency instead of using the task name.
And the output is the same:
> gradle -q B
Hello from A
Hello from BAdding multiple dependencies
You can add multiple dependencies.
task A << {
println 'Hello from A'
}
task B << {
println 'Hello from B'
}
task C << {
println 'Hello from C'
}
task D << {
println 'Hello from D'
}Now you can define a set of dependencies:
B.dependsOn A
C.dependsOn B
D.dependsOn CThe output is:
> gradle -q D
Hello from A
Hello from B
Hello from C
Hello from DOther example:
B.dependsOn A
D.dependsOn B
D.dependsOn CThe output is:
> gradle -q D
Hello from A
Hello from B
Hello from C
Hello from DMultiple dependencies with the dependsOn method
You can add multiple dependencies.
task A << {
println 'Hello from A'
}
task B(dependsOn: A) << {
println 'Hello from B'
}
task C << {
println 'Hello from C'
}
task D(dependsOn: ['B', 'C'] << {
println 'Hello from D'
}The output is:
> gradle -q D
Hello from A
Hello from B
Hello from C
Hello from D