在 gradle 刷新时运行 Flyway 迁移

Kla*_*ren 2 java gradle libgdx flyway

我仍然试图将我的头围绕在 gradle 上,所以请耐心等待。

我正在尝试将 Flyway 迁移设置为在每次 gradle 刷新/构建时自动运行,而不必运行命令行命令。因此,当有人提取包括一些新迁移在内的最新更改时,他们的本地数据库将是最新的。

我在根目录中有这个 build.grade:

buildscript {
    ...
    repositories {
        mavenLocal()
        mavenCentral()
}

allprojects {
    ...
}

project(":core") {
    apply plugin: "java"

    dependencies {
        compile project(":shared")
    }
}

project(":server") {
    apply plugin: "java"

    dependencies {
        compile project(":shared")
    }
}

project(":shared") {
    apply plugin: "java"
}

tasks.eclipse.doLast {
    delete ".project"
}
Run Code Online (Sandbox Code Playgroud)

我尝试合并飞行路线入门页面中的行的地方。

我基本上想$ gradle flywayMigrate -i从 build.gradle 文件中运行命令。我试过build.finalizedBy(flywayMigrate)但无济于事。

我怎么会做这样的事情?

提前致谢!

Opa*_*pal 5

为了使您build最终确定,flywayMigrate您需要运行gradle build可能您没有运行的。

要运行,flywayMigrate您可以使用defaultTaskswhich 将运行配置的任务,如果没有提供其他任务。所以:

buildscript {
    dependencies {
        classpath 'com.h2database:h2:1.4.191'
    }
}

plugins {
    id "org.flywaydb.flyway" version "4.1.2"
}

flyway {
    url = 'jdbc:h2:file:./target/foobar'
    user = 'sa'
}

defaultTasks 'flywayMigrate'
Run Code Online (Sandbox Code Playgroud)

当涉及到-i从内部配置(日志记录级别)build.gradle时,最新的 gradle 版本似乎是不可能的。

  • 如果您运行 `gradle build`(或任何其他任务),迁移将不会运行,因为如果传递任何任务,`defaultTasks` 将被忽略。您可以同时配置 `defaultTasks` 和 `build.dependsOn flywayMigrate`。如果您觉得我的回答有用,请至少点赞 ;) (2认同)