I think you can use a task rule
Eg:
tasks.addRule('Pattern: report<ID>') { taskName ->
if (taskName.startsWith('report')) {
String pathToken = ":${taskName.substring(6).toLowerCase()}:"
def matchingTasks = getTasksByName("report", true)
.findAll { it.path.toLowerCase().contains(pathToken) }
if (matchingTasks) {
task(taskName) {
dependsOn matchingTasks
}
}
}
}
Then you could run
gradle reportXxx
gradle reportYyy
gradle reportReportA