我们有两个数据库,我们想使用 flyway 的 gradle 插件来管理它们的迁移。
我想要一个可以迁移两个数据库的任务。但是,我似乎无法从单个任务中调用两次 flywayMigrate 任务。
这就是我所拥有的...
task migrateFoo() {
doFirst {
flyway {
url = 'jdbc:mysql://localhost/foo'
user = 'root'
password = 'password'
locations = ['filesystem:dev/src/db/foo']
sqlMigrationPrefix = ""
initOnMigrate = true
outOfOrder = true
}
}
doLast {
tasks.flywayMigrate.execute()
}
}
task migrateBar() {
doFirst {
flyway {
url = 'jdbc:mysql://localhost/bar'
user = 'root'
password = 'password'
locations = ['filesystem:dev/src/db/bar']
sqlMigrationPrefix = ""
initOnMigrate = true
outOfOrder = true
}
}
doLast {
tasks.flywayMigrate.execute()
}
}
task migrate(dependsOn: ['migrateFoo','migrateBar']) {}
从命令行显式调用 migrateFoo 或 migrateBar 可以正常工作,但是,如果我尝试调用 migrate 任务,则只会更新数据库 foo 。
migrateBar 任务的 doFirst 和 doLast 任务都被调用,但是,tasks.flywayMigrate.execute() 任务不会从 migrateBar 被第二次调用。
如何让 flyway 从单个任务中迁移 foo 和 bar?