The following works:
def recursivelyApplyToTaskDependencies(Task parent, Closure closure) { closure(parent) parent.dependsOn.findAll { dependency -> dependency instanceof Task }.each { task -> recursivelyApplyToTaskDependencies(task, closure) } } def shouldPrune = { task -> def propertyName = "${task.name}.prune" project.hasProperty(propertyName) && project[propertyName] == 'true' } gradle.taskGraph.whenReady { taskGraph -> taskGraph.getAllTasks().each { task -> def pruned = shouldPrune(task) if (pruned) { recursivelyApplyToTaskDependencies(task) { p -> p.enabled = false } } } }
source share