kotlin - 从设置中获取 gradle 属性

标签 kotlin gradle-kotlin-dsl

所以我正在尝试将我的应用程序转换为 Kotlin DSL 我面临的问题是访问 gradle.properties 就像我在 groovy 中所做的那样,我正在尝试访问 gradle.properties我的 Prop settings.gradle.kts文件

def propName = 'prop.name.something'
def propDisabled = Boolean.valueOf(properties[propName])
我尝试了几种使用 settings.extra[propName].toBoolean 访问它的方法。似乎应该有更直接的方法来访问这些属性?

最佳答案

访问 gradle.properties 中声明的属性的正确方法在 settings.gradle.kts是通过将其委托(delegate)给 settings目的:

val myProperty: String by settings
请注意,必须指定属性类型 String在这里明确。
这将获得属性 myProperty来自 gradle.properties文件。请注意,如果您在 pluginManagement { ... } 中使用它块,那么属性声明需要放在pluginManagement { ... }里面也一样,因为此块在脚本中的其他所有内容之前进行评估。
但是,如果属性名称包含 Kotlin 标识符中非法的符号,例如 . ,即使在 backticked identifiers 中也是不允许的,则您无法将其作为委托(delegate)属性访问。从 Gradle 6.7 开始,无法从 Gradle 模型访问这样的属性,但是,鉴于 gradle.properties只是一个 .properties文件,您可以将其读入 Java Properties实例:
val properties = File(rootDir, "gradle.properties").inputStream().use { 
    java.util.Properties().apply { load(it) } 
}
val propNameSomething = properties.getValue("prop.name.something") as String

关于kotlin - 从设置中获取 gradle 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64644810/

相关文章:

kotlin - 在 Kotlin 中使用 jsoup 进行网页抓取

gradle - 如何解决:Android Gradle插件仅支持Kotlin Gradle插件1.3.10及更高版本。

gradle - 如何使用 gradle 脚本 Kotlin 构建文件构建可运行的 ShadowJar?

gradle - 如何在 Gradle 中基于 Kotlin DSL 构建的多项目中禁用 distZip

kotlin - 如何解决此类型不匹配?

gradle - 如何使用 Kotlin DSL 将 JavaFX 添加到 gradle 构建文件?

android - 使用Firebase Tasks和Rx时,不得在主应用程序线程上调用

android - 如何从 recyclerview 适配器类更改主要 Activity 中的 textview 文本

android - Jetpack Compose TextField 捕获键盘 Enter-input

java - 第一个应用程序 - Random.nextInt() Unresolved 引用