2016-11-26 2 views
4

Ich versuche Spring Cloud Stream App Build-Skript zu Kotlin zu portieren. So weit, so gut, außer dem Dependency Management Block. Es ist schwierig, etwas im Netz zu finden. Samples decken dieses Thema ebenfalls nicht ab.Gradle Script Kotlin und dependencyManagement

Wie konvertiere ich folgenden Block zu build.gradle.kts? Vielen Dank.

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

Antwort

8

Völlig nicht getestet, aber ich glaube, es ist so etwas wie dies sein sollte:

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") 
    }) 
} 

Wenn Sie es nicht, Sie vertraut mit der gradle Skript Kotlin gesehen haben project extensions und groovy interop Funktionen sein sollte. Sie müssen sich wirklich die Quelle des Groovy-Plugins ansehen, das Sie konfigurieren, um zu sehen, wie es die Schließung erwartet. Die Beispiele im Großbuchstabenskript kotlin project sind auch eine gute Anleitung.

bearbeitet 19 Dez 2016

Die neueste Version der Abhängigkeitsmanagement-Plugin ist now more gradle script kotlin friendly und dem folgend ermöglichen:

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

Es könnte noch profitieren von einigen Kotlin Erweiterungsfunktionen zu entfernen die Notwendigkeit für it (mit einem Empfänger statt), aber auf jeden Fall eine Verbesserung!

Editieren 3 Nov 2017

Es funktioniert jetzt ohne it, etwa so:

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

funktioniert recht gut für eine nicht getestete Lösung. Vielen Dank. ;) Leider bin ich nur Neuling von Kotlin. Aber danke für einen Tipp, ich werde mir den Code genauer ansehen. – waste

+0

Keine Sorgen. Ich bin mir sicher, dass die Spring Guides/Beispiele bald aktualisiert werden, wenn Gradle Script Kotlin reifer ist. Obwohl die bessere Lösung für Spring wäre, einige Erweiterungsfunktionen bereitzustellen, um die DSL etwas freundlicher zu machen (keine Notwendigkeit für "delegateClosureOf()"). z.B. 'Spaß DependencyManagementExtension.imports (Importe: DependencyManagementHandler.() -> Einheit) {...}' –

+1

Keine funktioniert derzeit – Czar

Verwandte Themen