在 Gradle Kotlin DSL 中编写类型安全的自定义 Task 生成器
利用 Kotlin 委托属性和扩展函数构建 Gradle Task 的声明式 API,避免 Groovy 的字符串类型。 · 难度:入门 · +10XP
在 Gradle Kotlin DSL 中编写类型安全的自定义 Task 生成器
许多 Gradle 构建脚本依然混合使用 Groovy 与 Kotlin DSL,但后者允许完全类型安全的配置。本教程将创建一个名为 'releaseFlow' 的自定义 Task,它使用 Kotlin 的 lambda with receiver 和 delegated properties 来声明版本号、签名配置等。我们还将实现 Task 之间的依赖自动推导,以及通过 buildSrc 提供的 IDE 自动补全。
// buildSrc/src/main/kotlin/ReleaseFlowTask.kt
open class ReleaseFlowTask : DefaultTask() {
@Input
var version: String by project.objects.property()
@TaskAction
fun release() {
println("Releasing version $version")
}
}
// 在 build.gradle.kts 中使用
tasks.register("release") {
version = "1.0.0"
// 完全类型安全,编译期检查
}