最近,我正在尝试编写一些代码来体验 Spring 5中的反应特性和 Kotlin 扩展,我还准备了 gradle Kotlin DSL build.gradle.kt 来配置 gradle build。
build.gradle.kt
是从由 http://start.spring.io生成的 Spring Boot 模板代码转换而来的。
但是,在 buildscript
中的 ext
不能被 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.
Similar with above declare them in buildScript block:
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.
How can I avoid the duplication of val kotlinVersion: String by extra?