В эти дни я пытаюсь написать несколько кодов, чтобы испытать реактивные функции Spring и расширение kotlin в Spring 5, а также подготовил gradle Kotlin DSL build.gradle.kt для настройки сборки gradle.
build.gradle.kt
преобразован из кодов шаблонов Spring Boot, сгенерированных http://start.spring.io.
Но ext
в buildscript
не может быть обнаружен Gradle.
buildscript {
ext { }
}
ext
вызовет ошибку сборки Gradle.
Чтобы переменные в classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
и compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlinVersion")
работали, я жестко добавил переменные.
val kotlinVersion = "1.1.4"
val springBootVersion = "2.0.0.M3"
Но я должен объявить их в глобальном верхнем местоположении и продублировать их в buildscript
.
Код: https://github.com/hantsy/spring-reactive-sample/blob/master/kotlin-gradle/build.gradle.kts
Есть ли изящный подход к работе ext
?
Обновление. Есть несколько уродливых подходов:
Из примера Gradle Kotlin DSL, https://github.com/gradle/kotlin-dsl/tree/master/samples/project-properties объявляет свойства в gradel.properties.
kotlinVersion = 1.1.4 springBootVersion = 2.0.0.M3
И используйте его в build.gradle.kts.
buildScript{ val kotlinVersion by project } val kotlinVersion by project //another declare out of buildscript block.
Как и выше, объявите их в блоке buildScript:
buildScript{ extra["kotlinVersion"] = "1.1.4" extra["springBootVersion"] = "2.0.0.M3" val kotlinVersion: String by extra } val kotlinVersion: String by extra//another declare out of buildscript block.
Как я могу избежать дублирования val kotlinVersion: String дополнительным?
extra["kotlinVersion"] = "1.1.4" val kotlinVersion: String by extra
кval kotlinVersion: String by extra("1.1.4")
- person Claus Holst   schedule 03.12.2017