diff --git a/buildSrc/src/main/kotlin/CommonUtil.kt b/buildSrc/src/main/kotlin/CommonUtil.kt index 6f38351c4d8..85abe5c0f12 100644 --- a/buildSrc/src/main/kotlin/CommonUtil.kt +++ b/buildSrc/src/main/kotlin/CommonUtil.kt @@ -12,17 +12,23 @@ import java.io.File inline fun 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) } }