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) 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 val thisTask = this
project.afterEvaluate { val p = project ?: this.project
project.tasks.firstOrNull { it.name == task }?.let { thisTask.dependsOn(it) } 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) { fun AbstractTask.dependsOnTaskIfExistsRec(task: String, project: Project? = null, parentProject: Project? = null) {
dependsOnTaskIfExists(task) dependsOnTaskIfExists(task, project, parentProject)
(project ?: this.project).subprojects.forEach { (project ?: this.project).subprojects.forEach {
dependsOnTaskIfExistsRec(task, it) dependsOnTaskIfExistsRec(task, it, this.project)
} }
} }