我是一名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上编写相同的任务(用于动态创建其他任务)?
答案 0 :(得分:1)
是的,您可以动态创建任务,并通过Gradle Kotlin DSL中的(字符串)名称引用其他任务。
tasks {
"installDebugFlavors" {
android.applicationVariants.forEach { v ->
if (v.name.endsWith("Debug")) {
val name = v.name.capitalize()
dependsOn("install$name")
}
}
}
}