这几天在尝试写一些代码来体验Spring 5中的Spring响应式特性和kotlin扩展,还准备了一个gradle Kotlin DSL build.gradle.kt来配置gradle build。
build.gradle.kt
由http://start.spring.io生成的Spring Boot 模板代码转换而来。
但是Gradle无法检测到ext
。buildscript
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 by extra的重复?