spring-boot - 如何在执行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
解决方案
如果您在应用程序 yaml/properies 文件中正确配置了 Flyway 迁移,它将在启动期间启动。
为了在主应用程序迁移之前开始另一个 flyway 迁移,您可以使用 flyway 命令行或custom_pom.xml
为另一个模块创建一个单独的项目文件,并通过命令行的 mvn 插件触发它:mvn flyway:migrate
在执行主应用程序之前。
推荐阅读
- apache-spark - Spark-submit 无法访问 EMR 中的 hadoop 文件系统?
- c# - 行验证事件期间的 InvalidOperationException
- x86 - .section .text 和 .text with gas 之间的区别
- java - 如何从活动返回到导航底部的特定片段?
- postgresql - PostgreSQL 表比较
- vim - 如何在 Vim 的可视块中反转行片段的顺序?
- javascript - Chrome 在打印时通常不显示内联 SVG 图像
- javascript - 如何在 javascript 中获取名称(文本)的值?
- android - Android 布局:如何以最小的空间将 2 个 TextView 并排放置
- protractor - 如何编写量角器代码以从 Windows 连接到 mysql (Linux) db