如何在 Kotlin/Multiplatform 项目中使用 Gradle liquibaseRuntime 配置
How to use Gradle liquibaseRuntime configuration in a Kotlin/Multiplatform project
目前,我正在将 Spring 引导 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")
// ...
}
Reference: Understanding what to do when type-safe model accessors are not available
现在这两行对我来说没有意义。
liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
liquibaseRuntime(sourceSets.getByName("main").output)
根据 DependencyHandler 的 API 文档,有一些允许的符号。 A sourceSet
不是其中之一。所以不确定在那里做什么。
目前,我正在将 Spring 引导 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")
// ...
}
Reference: Understanding what to do when type-safe model accessors are not available
现在这两行对我来说没有意义。
liquibaseRuntime(sourceSets.getByName("main").compileClasspath)
liquibaseRuntime(sourceSets.getByName("main").output)
根据 DependencyHandler 的 API 文档,有一些允许的符号。 A sourceSet
不是其中之一。所以不确定在那里做什么。