所以我正在尝试将我的应用程序转换为 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/