摇篮。 Kotlin - 是否有可能创建动态(“飞行中”)任务?

时间:2017-07-30 11:18:04

标签: gradle kotlin gradle-kotlin-dsl

我是一名Android开发人员。结果写了Gradle的构建。我在Groovy上的Gradle DSL上写的很多任务。

有时我需要动态创建Gradle任务(“在飞行中”)。这里的例子:

task installDebugFlavors() {
    android.applicationVariants.all { v ->
        if (v.name.endsWith('Debug')) {
            String name = v.name.capitalize()
            dependsOn "install$name"
        }
    }
}

此任务生成包含所有风味组合的新任务。 结果Gradle脚本非常小,易于理解且易于支持。它非常强大的Groovy功能。而且它经常帮助我。

在新版Gradle中引入了新语言--Kotlin。

我的问题是:是否可以在Kotlin上编写相同的任务(用于动态创建其他任务)?

1 个答案:

答案 0 :(得分:1)

是的,您可以动态创建任务,并通过Gradle Kotlin DSL中的(字符串)名称引用其他任务。

tasks {
    "installDebugFlavors" {
        android.applicationVariants.forEach { v ->
            if (v.name.endsWith("Debug")) {
                val name = v.name.capitalize()
                dependsOn("install$name")
            }
        }
    }        
}