Can someone provide an example or reference to an example that shows how to make a task dependent on the output of another task?
As an example, suppose I have one task A that unzips a dependency into a directory. I then have another task B that copies some files out of that directory. Rather than explicitly making task B depend on A, it’s my understanding that tying the input of task B to the output of task A implicitly forms a dependency and also take better advantage of which tasks are considered up-to-date.
For some reason, I’m having trouble finding the right google search terms to find an example of this.
I know I saw Hans demo this in one of his Gradle talks.
If the input property accepts a ‘FileCollection’, you can use ‘inputProperty = otherTask.outputs.files’. In case of ‘Copy#from’, ‘from otherTask’ should also work.
This is great, thanks Peter. I noodled on this some more after submitting the question and stumbled upon the same answer as well. This just worked:
(Note this is a contrived example and not exactly what I’m using this for…
task unpackConfig(type: Copy, dependsOn: configurations.config) {
from zipTree(configurations.config.singleFile)
into "${buildDir}/config-src"
}
task generateRuntimeConfig(type: Copy) {
from tasks.unpackConfig
into "${targetConfigDir}"
}
‘tasks.’ can be omitted, if you want. ‘zipTree(…)’ should be wrapped in curly braces so that the configuration doesn’t get resolved at configuration time. Instead of ‘into “${targetConfigDir}”’, ‘into targetConfigDir’ should be used.