gradle - 如何从 Gradle 中的 Kotlin 获取 Groovy DSL 提供的值
问题描述
假设以下配置:
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
}
有没有办法获取 Groovy 脚本提供的值build.gradle.kts
?
解决方案
它不起作用,因为 Kotlin 是与 Groovy 不同的静态/强类型语言。libraries
没有在 Gradle 的 API 中的任何对象上定义。
您可以像这样访问它:
dependencies {
implementation((project.extra["libraries"] as LinkedHashMap<*, *>)["library"]!!)
}
println(project.extra["libraries"])
project.extra[“libraries”]
返回一个Object
所以我们需要正确地转换它以获得下一个值。它也被标记为@Nullable
因此!!
运算符。
——</p>
管理依赖版本的更好方法是利用Java 平台插件。
推荐阅读
- c++ - WinAPI GUI:状态栏是否可能带有对话框?
- asp.net - ASP.NET Web API 自己的响应代码模式建议
- mysql - 数据库设计 - 唯一属性的外键
- assembly - 如何从 nasm 转换为 gas 这段代码?
- json - Azure APIM:将 JSON 响应转换为自定义 XML 格式
- regex - 删除所有下划线直到最后一个数字
- sql - SQL 中的嵌套 CASE 语句
- python - 将小部件重新插入网格布局时出现奇怪的图形伪影
- java - Java 日期格式 dd.mm.yyyy
- python - STATICFILES_DIRS 指向远程服务器而不被收集-带有 WSGI 处理程序的 IIS