【问题标题】:How to use type safe extra properties in Gradle Kotlin DSL如何在 Gradle Kotlin DSL 中使用类型安全的额外属性
【发布时间】:2019-03-01 21:35:55
【问题描述】:

我有用 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")
}

在我的子项目中,我可以使用代码访问依赖项:

dependencies {
    implementation("group:name:${extra["libVersion"]}")
}

有没有办法通过名称访问libVersion 变量?我想在子项目中使用代码声明依赖:

dependencies {
    implementation("group:name:$libVersion")
}

因为这将为属性提供类型安全的链接以及属性值的 IDE 帮助。一种方法是将变量绑定到额外的属性,如下所示:

val libVersion: String by extra

但这意味着重复extra 中已声明的属性。那么如何以类型安全的方式组织子项目中的依赖版本,既不重复变量名又单点声明依赖版本?

【问题讨论】:

    标签: gradle kotlin


    【解决方案1】:

    你可以使用类似的代码

    val propertName by extra {
      //here goes the initializer code
      "the result"
    }
    

    extra{..} 函数定义了名为 propertName(或变量名)的项目的属性

    你可能会说

    val anotherProperty by rootProject.extra
    

    访问另一个项目的额外属性

    【讨论】:

    • 如何从extra调用多个变量?
    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 2018-12-19
    • 2019-07-10
    • 2017-11-22
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多