Kotlin Gradle 中的 Flyway - 无法导入 FlywayMigrateTask

问题描述 投票:0回答:2

我需要在两个不同的 shcemas 上运行两个不同的 Flyway 迁移,每个都有自己的用户帐户。 根据 Flyway 文档,我只需要为每个与

FlywayMigrateTask
的连接设置一个自定义任务。来自使用默认(Groovy)gradle 的官方文档:

task migrateDatabase1(type: org.flywaydb.gradle.task.FlywayMigrateTask) {
    url = 'jdbc:h2:mem:mydb1'
    user = 'myUsr1'
    password = 'mySecretPwd1'
}

task migrateDatabase2(type: org.flywaydb.gradle.task.FlywayMigrateTask) {
    url = 'jdbc:h2:mem:mydb2'
    user = 'myUsr2'
    password = 'mySecretPwd2'
}

我尝试在 Kotlin gradle (kts) 中执行此操作,但我的项目无法解析对

FlywayMigrateTask
的引用,即使我的
External Libraties
中有它:

如何注册任务:

tasks.register(
    "flywayTesting", 
    type = org.flywaydb.gradle.task.FlywayMigrateTask::class.java) {
    // Details hidden
}

我能够解析

org.flywaydb.gradle.task
包,但无法解析任务文件夹中的
FlywayMigrateTask
类。 我做错了什么?

我的 gradle 设置的亮点:

plugins {
    kotlin("jvm") version "1.6.0"
    id("org.flywaydb.flyway") version "8.5.1"
}

repositories {
    mavenCentral()
}

tasks.withType<Wrapper> {
    gradleVersion = "6.8.2"
    distributionType = Wrapper.DistributionType.BIN
}

dependencies {
    implementation("org.flywaydb:flyway-core:8.5.1")
    implementation("org.flywaydb:flyway-gradle-plugin:8.5.0")
}

kotlin {
    sourceSets["main"].apply {
        kotlin.srcDir("src/main/kotlin")
    }
}
kotlin gradle database-migration flyway gradle-kotlin-dsl
2个回答
0
投票

这对我来说就是这样。

先添加Flyway Gradle插件:

plugins {
    java
    id("org.flywaydb.flyway") version "9.22.0"
}

然后,定义自定义任务:

task("flywayMigrateLocal", org.flywaydb.gradle.task.FlywayMigrateTask::class) {
    description = "Migrates the local database"
    url = "jdbc:postgresql://localhost:5432/test"
    user = "test"
    password = "test"
    locations = arrayOf(
        "filesystem:src/main/resources/db/migration",
        "filesystem:src/test/resources/flyway/migrations_local"
    )
}

-1
投票
task<org.flywaydb.gradle.task.FlywayMigrateTask>("migrateDatabase1") {
url = 'jdbc:h2:mem:mydb1'
    user = 'myUsr1'
    password = 'mySecretPwd1'
}

task<org.flywaydb.gradle.task.FlywayMigrateTask>("migrateDatabase2") {
    url = 'jdbc:h2:mem:mydb2'
    user = 'myUsr2'
    password = 'mySecretPwd2'
}
© www.soinside.com 2019 - 2024. All rights reserved.