如何在 Gradle 中从 Kotlin 获取 Groovy DSL 提供的值

How to get values provided by Groovy DSL from Kotlin in Gradle

假设配置如下:

build.dependencies.gradle:

ext {
  libraries = [:]
}

libraries += [
  library : [group: 'com.example', name: 'library', version: '1.1.1']
]

build.gradle.kts:

apply(from = "build.dependencies.gradle")

dependencies {
  implementation(libraries["library"]) // does not work
}

有没有办法获取 build.gradle.kts 中 Groovy 脚本提供的值?

它不起作用,因为与 Groovy 不同,Kotlin 是 statically/strongly 类型语言。 libraries 未在 Gradle 的 API 的任何对象上定义。

您可以这样访问:

dependencies {
    implementation((project.extra["libraries"] as LinkedHashMap<*, *>)["library"]!!)
}

println(project.extra["libraries"])

project.extra[“libraries”] returns 和 Object 所以我们需要正确地转换它才能得到下一个值。它也被标记为 @Nullable 因此 !! 运算符。

管理依赖版本的更好方法是利用 Java Platform 插件。