首页 > 解决方案 > 如何在执行spring-boot flyway-ootb迁移之前以编程方式触发flyway迁移?

问题描述

在我的 spring-boot 项目中,我使用 Flyway ( org.flywaydb.flyway-core) 的开箱即用集成,并有一些在启动时执行并通过 default flyway_schema_history-table 管理的迁移脚本。

该项目还使用了一个模块,该模块带来了自己的 flyway 迁移脚本,这些脚本以编程方式迁移并跟踪另一个表中的迁移moduleX_schema_history

由于主项目的迁移需要处理通过模块迁移创建的一些表,因此模块迁移需要在 flyway-plugin 迁移主项目脚本之前发生。

如何在主应用程序飞行集成启动之前以编程方式实现执行模块迁移?flyway-plugin 迁移是如何以及何时触发的?

//编辑:我尝试在 FlywayAutoConfiguration 之前通过@Configuration注释的类执行代码

@AutoConfigureBefore({FlywayAutoConfiguration.class})
@AutoConfigureAfter({DataSourceAutoConfiguration.class})

但不幸的是,该类仍然被实例化了FlywayAutoConfiguration

//编辑:我问了相关的(更一般的)问题,如何从模块中订购 AutoConfiguration如何在模块的 Spring Boot 配置类中使用@AutoConfigureOrder

标签: spring-bootflyway

解决方案


如果您在应用程序 yaml/properies 文件中正确配置了 Flyway 迁移,它将在启动期间启动。

为了在主应用程序迁移之前开始另一个 flyway 迁移,您可以使用 flyway 命令行或custom_pom.xml为另一个模块创建一个单独的项目文件,并通过命令行的 mvn 插件触发它:mvn flyway:migrate在执行主应用程序之前。


推荐阅读