摇篮。 Kotlin – 是否可以创建动态(“飞行”)任务?

我是一个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上编写相同的任务(用于动态创建其他任务)?

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

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