Gradle Kotlin中如何替代Groovy的each{}迭代方法?
Gradle Kotlin DSL中替换Groovy each{}的Protobuf配置方案
原Groovy代码里的each是Groovy专属的集合迭代扩展函数,在Gradle Kotlin DSL中需要替换为Kotlin标准库的forEach方法。同时还要适配Kotlin DSL在配置内置生成器时的语法差异,以下是完整的适配后代码:
protobuf { protoc { artifact = "com.google.protobuf:protoc" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } } } } }
关键改动说明:
- 迭代逻辑:把
all().each { ... }替换为all().forEach { ... },forEach是Kotlin中遍历集合的标准方法,和Groovy的each功能完全一致。 - 内置生成器配置:Groovy里
java { ... }的隐式创建方式,在Kotlin DSL中需要通过create("java") { ... }显式调用创建方法——这是因为Kotlin DSL的类型系统更严格,不支持Groovy的隐式闭包解析逻辑。
内容的提问来源于stack exchange,提问作者FishBone000
相关产品推荐
相关产品推荐

