【发布时间】:2018-01-26 23:14:06
【问题描述】:
这几天,我正在尝试写一些代码来体验Spring 5中的Spring响应式特性和kotlin扩展,我还准备了一个gradle Kotlin DSL build.gradle.kt来配置gradle build。
build.gradle.kt由http://start.spring.io生成的Spring Boot模板代码转换而来。
但是Gradle检测不到buildscript中的ext。
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?
【问题讨论】:
-
不知道如何避免重复,不过可以加入:
extra["kotlinVersion"] = "1.1.4" val kotlinVersion: String by extratoval kotlinVersion: String by extra("1.1.4") -
@ClausHolst 很好的说明!
标签: gradle kotlin build.gradle gradle-kotlin-dsl