如何在 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 插件。
假设配置如下:
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 插件。