def test = file('test')
def target = file('target')
def testFile = file('test/foo.txt')
task clean << {
delete test, target
}
task createFile {
outputs.files testFile
doLast {
test.mkdirs()
testFile.text = 'Hello World!'
}
}
task sync1(type:Sync, dependsOn:createFile) {
from test
into target
}
task deleteSource(dependsOn: sync1) << {
delete testFile
}
task sync2(type:Sync, dependsOn:deleteSource) {
from test
into target
}
defaultTasks 'clean', 'sync2'
If I run this build, I get the following output:
$ gradle
:clean
:createFile
:sync1
:deleteSource
:sync2 UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.512 secs
When running with -i
, you can see Skipping task ':sync2' as it has no source files.
I think, the Sync task should not be skipped if it has no source files, because it may have to clean up stray files in its target directory.