読者です 読者をやめる 読者になる 読者になる

マルチデータソースにおけるGradleでのFlywayタスク実行

マルチデータソース(2つのRDB)を使っている場合に、FlywayのGradle PluginでflywayMigrateなどのタスクを実行し、両方のDBにマイグレーションを実行したい場合。

flyway {
    user = 'user1'
    password = 'pass1'
    url = 'jdbc:xxx://host1/db1'
}

def flyway2 = new org.flywaydb.core.Flyway()
flyway2.setDataSource('jdbc:xxx://host2/db2', 'user2', 'pass2')
flyway2.setLocations('filesystem:./src/main/resources/db_migration2')

tasks['flywayMigrate'].doLast {
    flyway2.migrate()
}

// 他タスク(flywayClean, flywayInfo, ...)も同様

プラグインの機能としては提供されていないので、Gradle(Groovy)側のカスタマイズで対応してみました。