如何在Gradle Kotlin DSL中使用类型安全的额外属性
我有一个用Kotlin DSL编写的多模块项目。以下是相关文件:如何在Gradle Kotlin DSL中使用类型安全的额外属性,gradle,kotlin,Gradle,Kotlin,我有一个用Kotlin DSL编写的多模块项目。以下是相关文件: rootDir/gradle/dependencies.gradle.kts: // other config val libVersion by extra("0.1") rootDir/build.gradle.kts: // other config subprojects { apply(from = "$rootDir/gradle/dependencies.gradle.kts") } 在我的子项目中,我可
rootDir/gradle/dependencies.gradle.kts
:
// other config
val libVersion by extra("0.1")
rootDir/build.gradle.kts
:
// other config
subprojects {
apply(from = "$rootDir/gradle/dependencies.gradle.kts")
}
在我的子项目中,我可以通过代码访问依赖项:
dependencies {
implementation("group:name:${extra["libVersion"]}")
}
有没有办法通过名称访问libVersion
变量?我想使用以下代码声明子项目中的依赖项:
dependencies {
implementation("group:name:$libVersion")
}
因为这将提供到属性的类型安全链接,以及关于属性值的IDE帮助。一种方法是将变量绑定到额外属性,如下所示:
val libVersion: String by extra
但这将意味着重复
extra
中已声明的属性。那么,如何以类型安全的方式组织子项目中的依赖项版本,而不重复变量名,同时也使用单点声明依赖项版本?您可以使用以下代码
val propertName by extra {
//here goes the initializer code
"the result"
}
extra{..}
函数为名为propertName
的项目定义属性(或变量名称)
你可能会说
val anotherProperty by rootProject.extra
要访问其他项目的额外属性如何从
extra
调用多个变量?