簡體   English   中英

如何在 Kotlin/多平台項目中使用 Gradle liquibaseRuntime 配置

[英]How to use Gradle liquibaseRuntime configuration in a Kotlin/Multiplatform project

目前,我正在將我的 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"])
            ))

我被這兩個卡住了,不知道該怎么辦:

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

他們添加了依賴 class DefaultSelfResolvingDependency的實例(它們似乎也被一些代理包裹)。 查看 liquibase-gradle 插件代碼沒有幫助。

那么,我應該如何移植這兩個依賴項呢?

不熟悉 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")
}

如果由於某種原因無法開箱即用,那么您需要通過顯式檢索configuration的引用來幫助 Gradle 的 Kotlin DSL:

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

參考: 了解當類型安全的 model 訪問器不可用時該怎么做

現在這兩行對我來說沒有意義。

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

根據DependencyHandler的 API 文檔,有某些允許的符號。 sourceSet不是其中之一。 所以不知道在那里做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM