Как использовать безопасные дополнительные свойства в Gradle Kotlin DSL - PullRequest
0 голосов
/ 01 марта 2019

У меня есть многомодульный проект, написанный на 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.Итак, как организовать версии зависимостей в подпроектах безопасным для типов образом без повторения имен переменных, но также с единой точкой объявления версий зависимостей?

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете использовать код как

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

Функция extra{..} определяет свойство для проекта с именем propertName (или именем переменной)

И выможет сказать

val anotherProperty by rootProject.extra

для доступа к дополнительному свойству другого проекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...