Я пытаюсь перенести скрипт сборки приложения Spring Cloud Stream на Kotlin. Пока все хорошо, кроме блока управления зависимостями. В сети сложно что-либо найти. Образцы тоже не охватывают эту тему.

Как преобразовать следующий блок в build.gradle.kts? Спасибо.

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR2"
    }
}
12
wst 26 Ноя 2016 в 16:15

2 ответа

Лучший ответ

Полностью не проверено, но я считаю, что должно быть примерно так:

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

Если вы его не видели, то должны быть знакомы с расширения проекта и отличное взаимодействие. Вам действительно нужно покопаться в источнике настраиваемого плагина groovy, чтобы увидеть, как он ожидает использовать закрытие. Примеры в проекте kotlin скрипта gradle также могут служить хорошим руководством.

Изменить, 19 декабря 2016 г.

Последняя версия подключаемого модуля управления зависимостями: теперь более дружелюбный для скрипта gradle kotlin и позволит следующее:

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

Он все еще может извлечь выгоду из некоторых функций расширения Kotlin, чтобы избавиться от необходимости в it (используя вместо этого приемник), но определенно улучшение!

Редактировать, 3 ноября 2017 г.

Теперь он работает без it, вот так:

configure<DependencyManagementExtension> {
    imports {
        mavenBom("io.spring.platform:platform-bom:Camden.SR2")
    }
}
13
nerdherd 4 Ноя 2017 в 01:10

Использование последней версии 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}")
    }
}
5
Kane 8 Ноя 2018 в 07:48