android - 使用 Gradle Kotlin DSL 在 settings.gradle.kts 中设置 gradle.ext
问题描述
这是来自google/exoplayer的代码片段——它是用 Groovy buildscript 编写的。
// settings.gradle
gradle.ext.exoplayerRoot = 'path/to/exoplayer'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')
如何使用 Kotlin DSL 实现这一目标?
我找不到任何有用的资源或文件。任何帮助,将不胜感激。
解决方案
挖了一会儿找到了解决办法。
在 Groovy 中,特性是动态实现的——所以即使类 A 没有在类定义中实现接口 B,它也可能在以后实现它。
我没有看到 Gradle 内部结构,所以我无法正确解释这一点,但它似乎有效。希望这可以帮助。
if (gradle is ExtensionAware) {
val extension = gradle as ExtensionAware
extension.extra["exoplayerRoot"] = "path/to/exoplayer"
extension.extra["exoplayerModulePrefix"] = "exoplayer-"
apply(from = File(extension.extra["exoplayerRoot"].toString(), "core_settings.gradle"))
}
对于那些使用 ExoPlayer 的人,我创建了一个为 Kotlin DSL 用户请求一些文档的问题。
推荐阅读
- sql - PhpMyAdmin - 导出与查询结果不同
- python - 为什么 input() 只返回字符串?
- python - 将两个列表合并到字典中,有例外挑战
- python - 机器人框架和 Python - 检查文件是否存在
- sql - 如果语句包含 RETURNING 子句,则 mysql_stmt_bind_result() 失败
- java - 找不到绑定 vaadin 组合框的方法
- spring-boot - Feign 客户端错误 - 页面大小不得小于 1
- automation - Cypress 无法运行,因为此二进制文件没有可执行权限
- javascript - 如果日期是对象数组中的属性,我该如何使用它们?
- sql - 有什么方法可以在 BigQuery 中获取具有空值和字符串值“null”的列数?