Как использовать конфигурацию Gradle liquibaseRuntime в проекте Kotlin / Multiplatform - PullRequest
0 голосов
/ 12 апреля 2020

В настоящее время я переношу конфигурацию Spring Boot build.gradle.kts в стек Kotlin / MP. Я не знаю, что делать с одной частью конфигурации liquibaseRuntime. Исходная конфигурация выглядит следующим образом:

// other dependencies omitted  
liquibaseRuntime("org.liquibase:liquibase-core")
liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:3.8")
liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
liquibaseRuntime(sourceSets.getByName("main").output)
liquibaseRuntime("org.postgresql:postgresql")
liquibaseRuntime("org.springframework.boot:spring-boot:$springBootVersion")

Некоторую часть этой конфигурации можно заменить на:

sourceSets {
    val jvmMain by getting {
        dependencies {
            configurations["liquibaseRuntime"].dependencies.addAll(listOf(
                DefaultExternalModuleDependency("org.liquibase", "liquibase-core", null, "default"),
                DefaultExternalModuleDependency("org.liquibase.ext", "liquibase-hibernate5", "3.8", "default"),
                DefaultExternalModuleDependency("org.postgresql", "postgresql", null, "default"),
                DefaultExternalModuleDependency("org.springframework.boot", "spring-boot", "2.2.4.RELEASE", "default")
    //          DefaultSelfResolvingDependency(configurations["compileClasspath"])
            ))

Я застрял с этими двумя и не знаю, что делать do:

liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
liquibaseRuntime(sourceSets.getByName("main").output)

Они добавляют экземпляры класса зависимостей DefaultSelfResolvingDependency (они также, похоже, обернуты некоторым прокси). Просмотр кода плагина liquibase-gradle не помог.

Итак, как мне перенести эти две зависимости?

1 Ответ

1 голос
/ 12 апреля 2020

Не знаком с плагином Liquibase Gradle. Я предполагаю, что вы применили плагин следующим образом:

plugins {
    id("org.liquibase.gradle") version "2.0.2"
}

Тогда вы должны иметь возможность делать то, что у вас обычно:

dependencies {
    liquibaseRuntime("org.liquibase:liquibase-core")
    liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:3.8")
    liquibaseRuntime("org.postgresql:postgresql")
    liquibaseRuntime("org.springframework.boot:spring-boot:$springBootVersion")
}

Если по какой-то причине, которая не работала «из коробки», вам нужно помочь Kotlin DSL в Gradle, явно получив ссылку на configuration:

val liquibaseRuntime by configurations

dependencies {
    liquibaseRuntime("org.liquibase:liquibase-core")
    liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:3.8")
    liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
    liquibaseRuntime(sourceSets.getByName("main").output)
    liquibaseRuntime("org.postgresql:postgresql")
    liquibaseRuntime("org.springframework.boot:spring-boot:$springBootVersion")
}

Вы также можете сделать а также следующее:

dependencies {
    "liquibaseRuntime"("org.liquibase:liquibase-core")
    "liquibaseRuntime"("org.liquibase.ext:liquibase-hibernate5:3.8")
    // ...
}

Ссылка: Понимание того, что делать, когда нет доступа к модели с безопасной моделью

Теперь эти два строки не имеют смысла для меня.

liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
liquibaseRuntime(sourceSets.getByName("main").output)

Согласно документации API для DependencyHandler , существуют определенные разрешенные обозначения. A sourceSet не является одним из них. Так что не уверен, что там делать.

...