wst*_*wst 9 spring build-script gradle kotlin
我正在尝试将Spring Cloud Stream应用程序构建脚本移植到Kotlin.到目前为止,非常好,除了依赖管理块.在网上很难找到任何东西.样本也不包括该主题.
如何将以下块转换为build.gradle.kts?谢谢.
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2"
}
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*ett 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")
})
}
Run Code Online (Sandbox Code Playgroud)
如果你还没有看到它,你应该熟悉gradle脚本kotlin的项目扩展和groovy互操作函数.你真的必须深入研究你正在配置的groovy插件的来源,看看它希望如何使用闭包.gradle脚本kotlin项目中的示例也是一个很好的指南.
编辑2016年12月19日
最新版本的依赖管理插件现在更加友好的gradle脚本kotlin并允许以下内容:
configure<DependencyManagementExtension> {
imports {
it.mavenBom("io.spring.platform:platform-bom:Camden.SR2")
}
}
Run Code Online (Sandbox Code Playgroud)
它仍然可以从一些Kotlin扩展功能中获益,以消除it(使用接收器)的需要,但绝对是一种改进!
编辑2017年11月3日
它现在没有了it,就像这样:
configure<DependencyManagementExtension> {
imports {
mavenBom("io.spring.platform:platform-bom:Camden.SR2")
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle 支持dependency通过该功能在 Groovy 和 Kotlin DSL 中导入块中的 BOM 文件platform。platform可以通过多种方式使用,但您通常会看到它用作控制传递依赖项版本的方法,类似于依赖项<scope>import</scope>Maven 中的依赖项。
所提供的代码块的翻译将是:
# Kotlin DSL
dependencies {
// wrap the BOM coordinates with the "platform" keyword
implementation platform("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2")
// declare other dependencies
}
Run Code Online (Sandbox Code Playgroud)
Gradle 可以更进一步,不仅建议传递依赖项的版本,还可以通过enforcedPlatform.
dependencies {
implementation enforcedPlatform("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2")
}
Run Code Online (Sandbox Code Playgroud)
参考文献: https://docs.gradle.org/current/userguide/dependency_management_terminology.html#sub::terminology_platform https://docs.gradle.org/current/userguide/platforms.html#sub:bom_import
使用最新的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}")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |