我正在尝试将Spring Cloud Stream应用程序构建脚本移植到Kotlin。到目前为止,一切都很好,除了依赖管理块。在网络上很难找到任何东西。示例也没有涉及这个主题。如何将下面的块转换为build.gradle.kts?谢谢。
build.gradle.kts
dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2" } }
bybem2ql1#
完全没有经过测试,但我相信应该是这样的:
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日归档依赖关系管理插件的最新版本现在对gradle脚本Kotlin更加友好,并将允许以下操作:
configure<DependencyManagementExtension> { imports { it.mavenBom("io.spring.platform:platform-bom:Camden.SR2") } }
它仍然可以受益于一些Kotlin扩展函数,以消除对X1 M0 N1 X的需要(使用接收器代替),但绝对是一个改进!2017年11月3日***它现在可以在没有it的情况下工作,如下所示:
it
configure<DependencyManagementExtension> { imports { mavenBom("io.spring.platform:platform-bom:Camden.SR2") } }
ryhaxcpt2#
Gradle支持通过platform功能在Groovy和Kotlin DSL中的dependency块中导入BOM文件。platform可以通过多种方式使用,但您通常会看到它被用作控制传递依赖项版本的一种方式,类似于Maven中的<scope>import</scope>依赖项。所提供的代码块的转换为:
platform
dependency
<scope>import</scope>
# Kotlin DSL dependencies { // wrap the BOM coordinates with the "platform" keyword implementation platform("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2") // declare other dependencies }
Gradle可以更进一步,不仅建议传递依赖项的版本,还可以通过enforcedPlatform强制执行版本。
enforcedPlatform
dependencies { implementation enforcedPlatform("org.springframework.cloud:spring-cloud-dependencies:Camden.SR2") }
References: https://docs.gradle.org/current/userguide/dependency_management_terminology.html#sub::terminology_platformhttps://docs.gradle.org/current/userguide/platforms.html#sub:bom_import
cld4siwp3#
使用下面最新的io.spring.dependency-management:1.0.6.RELEASE更简单的代码片段也可以工作。
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}") } }
3条答案
按热度按时间bybem2ql1#
完全没有经过测试,但我相信应该是这样的:
如果你还没有看过,你应该熟悉gradle脚本Kotlin的project extensions和groovy interop函数,你真的需要深入了解你正在配置的groovy插件的源代码,看看它是如何使用闭包的,gradle脚本kotlin项目中的例子也是一个很好的指南。
2016年12月19日归档
依赖关系管理插件的最新版本现在对gradle脚本Kotlin更加友好,并将允许以下操作:
它仍然可以受益于一些Kotlin扩展函数,以消除对X1 M0 N1 X的需要(使用接收器代替),但绝对是一个改进!
2017年11月3日***
它现在可以在没有
it
的情况下工作,如下所示:ryhaxcpt2#
Gradle支持通过
platform
功能在Groovy和Kotlin DSL中的dependency
块中导入BOM文件。platform
可以通过多种方式使用,但您通常会看到它被用作控制传递依赖项版本的一种方式,类似于Maven中的<scope>import</scope>
依赖项。所提供的代码块的转换为:
Gradle可以更进一步,不仅建议传递依赖项的版本,还可以通过
enforcedPlatform
强制执行版本。References: https://docs.gradle.org/current/userguide/dependency_management_terminology.html#sub::terminology_platformhttps://docs.gradle.org/current/userguide/platforms.html#sub:bom_import
cld4siwp3#
使用下面最新的
io.spring.dependency-management:1.0.6.RELEASE
更简单的代码片段也可以工作。