2016-11-26 144 views
4

我想將端口的Spring Cloud Stream應用程序構建腳本移植到Kotlin。到目前爲止,除了依賴管理塊以外,這麼好。網絡中很難找到任何東西。樣本也不包括該主題。Gradle腳本Kotlin和dependencyManagement

如何將以下區塊轉換爲build.gradle.kts?謝謝。

dependencyManagement { 
    imports { 
     mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2" 
    } 
} 

回答

8

完全沒有測試過,但我相信它應該是這樣的:

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這個腳本科特林的project extensionsgroovy interop功能。你真的需要挖掘你正在配置的groovy插件的來源,看看它期望如何使用閉包。 gradle腳本kotlin項目中的例子也是一個很好的指導。

編輯二○一六年十二月一十九日

的依賴管理插件的最新版本是now more gradle script kotlin friendly並允許下列:

configure<DependencyManagementExtension> { 
    imports { 
     it.mavenBom("io.spring.platform:platform-bom:Camden.SR2") 
    } 
} 

它仍然可以從一些科特林擴展功能中受益刪除需要it(使用接收器代替),但絕對是一種改進!

編輯2017年11月3日

現在作品,未經it,像這樣:

configure<DependencyManagementExtension> { 
    imports { 
     mavenBom("io.spring.platform:platform-bom:Camden.SR2") 
    } 
} 
+0

非常有效的一個未經考驗的解決方案。謝謝。 ;)不幸的是,我只是Kotlin新手。但是,謝謝你的提示,我會更好地審視代碼。 – waste

+0

不用擔心。我相信當Gradle Script Kotlin更成熟時,Spring的指南/示例將會很快更新。雖然更好的解決方案是讓Spring提供一些擴展功能來使DSL更友好一點(不需要'delegateClosureOf()')。例如'有趣DependencyManagementExtension.imports(進口:DependencyManagementHandler。() - > Unit){...}' –

+1

目前沒有工作 – Czar