2

我是一名安卓开发者。结果由 Gradle 编写构建。我在 Groovy 上的 Gradle DSL 上编写的许多任务。

有时我需要动态创建 Gradle 任务(“on fly”)。这里的例子:

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

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

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

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

4

1 回答 1

1

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

tasks {
    "installDebugFlavors" {
        android.applicationVariants.forEach { v ->
            if (v.name.endsWith("Debug")) {
                val name = v.name.capitalize()
                dependsOn("install$name")
            }
        }
    }        
}
于 2017-07-30T19:35:08.170 回答