用于更新多个数据库的Gradle flyway脚本
我有一个Gradle脚本,它使用flyway插件创建一些数据库表,现在我需要更新该脚本,以便它可以使用两组独立的flyway脚本,每个脚本更新一个独立的数据库 在脚本的单数据库版本中,我只需执行以下操作:用于更新多个数据库的Gradle flyway脚本,gradle,flyway,Gradle,Flyway,我有一个Gradle脚本,它使用flyway插件创建一些数据库表,现在我需要更新该脚本,以便它可以使用两组独立的flyway脚本,每个脚本更新一个独立的数据库 在脚本的单数据库版本中,我只需执行以下操作: flyway { url = 'jdbc:edb://localhost:5432/mydb' schemas = ['my_schema'] user = 'my_user' password = 'my_pass' locations = ['fil
flyway {
url = 'jdbc:edb://localhost:5432/mydb'
schemas = ['my_schema']
user = 'my_user'
password = 'my_pass'
locations = ['filesystem:src/main/resources/db/flyway/my_db']
}
我一直在尝试声明一个新任务来运行第二个db的脚本:
task flywayMigrate2 << {
ext {
flyway {
url = 'jdbc:edb://localhost:5432/mydb2'
schemas = ['my_schema2']
user = 'my_user2'
password = 'my_pass2'
locations = ['filesystem:src/main/resources/db/flyway/my_db2']
}
}
}
flywayMigrate2.finalizedBy flywayMigrate
任务flywayMigrate2我不认为为了引入第二个Flyway配置,您必须定义另一个Gradle任务
根据您的需要,您只需使用Gradle属性覆盖
gradle -Pflyway.user=myUsr -Pflyway.schemas=schema1,schema2 -Pflyway.placeholders.keyABC=valXYZ
gradle -Dflyway.user=myUser -Dflyway.schemas=schema1,schema2 -Dflyway.placeholders.keyABC=valueXYZ
或系统属性
gradle -Pflyway.user=myUsr -Pflyway.schemas=schema1,schema2 -Pflyway.placeholders.keyABC=valXYZ
gradle -Dflyway.user=myUser -Dflyway.schemas=schema1,schema2 -Dflyway.placeholders.keyABC=valueXYZ
或提供外部飞行通道配置
gradle -Dflyway.configFiles=path/to/myAlternativeConfig.conf flywayMigrate
Flyway Gradle插件遵循以下配置顺序:
系统属性
环境变量
自定义配置文件
梯度性质
build.gradle中的Flyway配置部分
/flyway.conf
Flyway Gradle插件默认值
或者,您可以引入一个覆盖Flyway渐变属性的新任务
task migrate2(FlywayMigrateTask) {
project.ext['flyway.user']='myUsr'
project.ext['flyway.password']='mySecretPwd'
project.ext['flyway.schemas']='schema1,schema2,schema3'
project.ext['flyway.placeholders.keyABC']='valueXYZ'
project.ext['flyway.placeholders.otherplaceholder']='value123'
}
flyway{…}
扩展对象用于配置所有flyway任务通用的属性。每个任务都有可以配置的属性,我猜任务级属性会覆盖flyway{…}
extension对象上配置的属性
我认为您应该在build.gradle中配置两个实例
import org.flywaydb.gradle.task.*
task migrate1(type: FlywayMigrateTask) {
url = 'jdbc:edb://localhost:5432/mydb1'
user = 'user1'
locations = ['filesystem:src/main/flyway/db1/migration']
// etc
}
task migrate2(type: FlywayMigrateTask) {
url = 'jdbc:edb://localhost:5432/mydb2'
user = 'user2'
locations = ['filesystem:src/main/flyway/db2/migration']
// etc
}
另请参见谢谢,我需要将flyway配置值包含在构建脚本中,而不是在命令行中传递。我认为您的project.ext示例所做的事情与我的flywayMigrate2任务相同,即覆盖任务完成后将保留的全局值