【发布时间】:2021-05-04 11:38:14
【问题描述】:
我有一个 Maven 多模块 Spring Boot 项目,其中包含模块 App、Domain1 和 Domain2。应用依赖于 Domain1 和 Domain2。
Flyway 在 App 模块中自动配置,迁移在 db/migrations 中。它运行没有问题。
在域模块中,我有带有 @AutoConfigureBefore(JpaAutoConfiguration::class) 的 AutoConfiguration 类,可以“每个域”手动运行 flyway。每个域在不同的位置都有它的迁移文件(以防止冲突):
域1:
@Autowired
fun migrateFlyway(dataSource: DataSource) {
val cfg = FluentConfiguration()
.locations("classpath:migrations/domain1")
.baselineOnMigrate(true)
.table("flyway_domain1_history")
.dataSource(dataSource)
val flyway = Flyway(cfg)
flyway.migrate()
}
域2:
@Autowired
fun migrateFlyway(dataSource: DataSource) {
val cfg = FluentConfiguration()
.locations("classpath:migrations/domain2")
.baselineOnMigrate(true)
.table("flyway_domain2_history")
.dataSource(dataSource)
val flyway = Flyway(cfg)
flyway.migrate()
}
问题是:域中的两个 flyway 实例都运行,创建了各自的历史表。但是:它们实际上都没有执行其中的 sql 文件,尽管它们存在(从目标文件夹中的 IntelliJ 检查,并且在使用 Maven 构建整个东西之后,SQL 文件存在于 JAR 中)。
我错过了什么吗?
【问题讨论】: