我正在尝试将Spring Cloud Stream应用程序构建脚本移植到Kotlin。到目前为止,非常好,除了依赖管理块。在网上很难找到任何东西。样本也不包括该主题。
如何将以下块转换为build.gradle.kts
?感谢。
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2"
}
}
答案 0 :(得分:13)
完全没有经过测试,但我相信它应该是这样的:
import io.spring.gradle.dependencymanagement.DependencyManagementExtension
import io.spring.gradle.dependencymanagement.ImportsHandler
configure<DependencyManagementExtension> {
imports(delegateClosureOf<ImportsHandler> {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2")
})
}
如果你还没有看过它,你应该熟悉gradle脚本kotlin的project extensions和groovy interop函数。你真的必须深入研究你正在配置的groovy插件的来源,看看它希望如何使用闭包。 gradle脚本kotlin项目中的示例也是一个很好的指南。
编辑2016年12月19日
依赖关系管理插件的最新版本为now more gradle script kotlin friendly,并允许以下内容:
configure<DependencyManagementExtension> {
imports {
it.mavenBom("io.spring.platform:platform-bom:Camden.SR2")
}
}
它仍然可以从一些Kotlin扩展功能中获益,以消除it
(使用接收器)的需要,但绝对是一种改进!
编辑2017年11月3日
现在没有it
就可以了,就像这样:
configure<DependencyManagementExtension> {
imports {
mavenBom("io.spring.platform:platform-bom:Camden.SR2")
}
}
答案 1 :(得分:2)
在更简单的代码段下面使用最新的io.spring.dependency-management:1.0.6.RELEASE
也可以。
plugins {
id("io.spring.dependency-management") version "1.0.6.RELEASE"
}
dependencyManagement {
val springCloudVersion = "Finchley.SR2"
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}")
}
}
答案 2 :(得分:0)
我在这里参加聚会有点晚了,但是看来Gradle支持在Groovy和Kotlin DSL的dependency
块中导入BOM表文件。提供的代码块的翻译为:
dependencies {
// note that the BOM coordinates are wrapped with the "platform" keyword
implementation(platform("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2"))
// declare other dependencies
}