Fix recursive task dependency helpers

This commit is contained in:
Ilya Chernikov
2017-09-04 13:28:54 +03:00
parent 95035b3d72
commit 8c44b62d16
+12 -6
View File
@@ -12,17 +12,23 @@ import java.io.File
inline fun <reified T : Task> Project.task(noinline configuration: T.() -> Unit) = tasks.creating(T::class, configuration)
fun AbstractTask.dependsOnTaskIfExists(task: String) {
fun AbstractTask.dependsOnTaskIfExists(task: String, project: Project?, parentProject: Project?) {
val thisTask = this
project.afterEvaluate {
project.tasks.firstOrNull { it.name == task }?.let { thisTask.dependsOn(it) }
val p = project ?: this.project
p.afterEvaluate {
p.tasks.firstOrNull { it.name == task }?.also {
if (parentProject != null) {
parentProject.evaluationDependsOn(p.path)
}
thisTask.dependsOn(it)
}
}
}
fun AbstractTask.dependsOnTaskIfExistsRec(task: String, project: Project? = null) {
dependsOnTaskIfExists(task)
fun AbstractTask.dependsOnTaskIfExistsRec(task: String, project: Project? = null, parentProject: Project? = null) {
dependsOnTaskIfExists(task, project, parentProject)
(project ?: this.project).subprojects.forEach {
dependsOnTaskIfExistsRec(task, it)
dependsOnTaskIfExistsRec(task, it, this.project)
}
}