将 Flyway 设置为在 Spring Boot 中使用不同的环境

Posted

技术标签:

【中文标题】将 Flyway 设置为在 Spring Boot 中使用不同的环境【英文标题】:Set Flyway to work with different environments in Spring Boot 【发布时间】:2021-10-24 20:00:12 【问题描述】:

我有一个 Spring Boot 应用程序,我需要将 Flyway 集成到其中。 我希望 Flyway 迁移在应用程序启动时运行。 我已将 Flyway 脚本文件放在 src\main\resources\db\migration 文件夹中。 但是,我想添加一些与应用程序运行的特定环境/阶段相对应的其他子文件夹。例如:本地、开发、测试... 我还需要一个 commons 文件夹,其中包含要在所有环境中运行的迁移。 我将设置一个环境变量来确定正确的阶段。 我需要这种方式以编程方式合并我需要在每个环境中运行的脚本文件夹。

我找不到使用 Spring Boot 执行此操作的方法。关于如何实现它的任何想法?

【问题讨论】:

哇。一个简单的谷歌搜索,我看到了以下链接:docs.spring.io/spring-boot/docs/current/reference/html/… @Seelenvirtuose 我已经看到了该链接,但我认为它不能回答我的要求。它只是提到了一个测试环境的案例,我需要其他几个。 您可以拥有任意数量的弹簧型材,有一个关于它的文档here。 @Seelenvirtuose 提供的链接说明您可以为任何弹簧配置文件自定义 spring.flyway.locations 属性。 @amanin 好的,谢谢。也许我需要进一步回顾如何在 Spring 中使用配置文件。抱歉,如果这是一个不必要的问题。 【参考方案1】:

怎么样

spring.flyway.locations=classpath:db/migration/common,classpath:db/migration/$ENV_VARIABLE

【讨论】:

谢谢。这对我有用。我不确定是否有任何编程方式来改变 Spring Boot 运行 Flyway 的方式,但这个答案至少对我有用。

以上是关于将 Flyway 设置为在 Spring Boot 中使用不同的环境的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot 属性文件设置 Flyway 'baselineOnMigrate' 和 'baselineVersion'

Spring Boot:使用 @DataJpaTest 和 Flyway 设置 Hibernate 命名策略

无法将docker Spring-Boot应用程序与docker-compose中的mysql容器和flyway连接起来

无法在 Spring Boot 中将 Flyway 迁移与 postgresQL 连接起来

Spring Boot Flyway 将数据库迁移应用到错误的数据库

使用 Flyway 和 Spring Boot 在 docker testcontainers 环境中迁移模式