从设置中获取 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
所以我正在尝试将我的应用程序转换为 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