从设置中获取 gradle 属性

Get gradle property from settings

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

def propName = 'prop.name.something'
def propDisabled = Boolean.valueOf(properties[propName])

我尝试了几种使用 settings.extra[propName].toBoolean 访问它的方法。似乎应该有更直接的方式来访问这些属性?

settings.gradle.kts 中访问 gradle.properties 中声明的 属性 的正确方法是将其委托给 settings 对象:

val myProperty: String by settings

请注意,必须在此处明确指定 属性 类型 String

这将从 gradle.properties 文件中获取 属性 myProperty。请注意,如果您在 pluginManagement { ... } 块中使用它,则 属性 声明也需要放在 pluginManagement { ... } 中,因为此块在脚本中的其他所有内容之前被评估。

但是,如果 属性 名称包含 Kotlin 标识符中非法的符号,例如 .,即使在 backticked identifiers 中也是不允许的,那么您将无法访问它作为委托 属性。从 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