如何使用 Spring 配置文件设置 Flyway 迁移文件位置

2024-04-27

我有两个 Spring 配置文件dev and test配置为开发和测试环境。在每个环境中我使用不同的数据库即h2在开发和postgresql在测试中。以下是每个配置文件的我的属性文件,其中{vendor}由 spring boot 解决h2 and postgresql分别根据配置的数据源。

应用程序-dev.properties

spring.flyway.locations=classpath:db/migration/{vendor}

应用程序测试.properties

#Data source
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

#Flyway
spring.flyway.check-location=false
spring.flyway.locations=classpath:/db/migration/test/{vendor}

Flyway 迁移文件dev个人资料在下面test/resources并为test个人资料下main/resources

当我运行我的应用程序时,这工作正常test配置文件,它只在下面选择迁移文件main/resources。但是,当我使用运行单元测试时dev轮廓。我希望它只选择下面的文件src/test/resources/db/migration/h2。但 Flyway 正在从以下位置获取迁移文件main/resources and test/resources两者都会导致错误

org.flywaydb.core.api.FlywayException:发现多个版本 1 的迁移

我不明白这种行为。有关如何解决此问题的任何意见?


所以,这就是我的做法。

要求:

  1. 使用 Spring 配置文件为不同环境配置应用程序,即dev, test and prod.
  2. 使用 Spring 配置文件根据环境加载 Flyway 迁移文件。

每个环境的数据库:

  1. H2数据库为dev环境。
  2. postgresql数据库为test环境。
  3. postgresql数据库为prod环境。

配置

  1. 创建 Spring 配置文件dev, test and prod in pom.xml.

    <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> </profile> <profile> <id>prod</id> </profile> </profiles>

  2. 为每个配置文件创建属性文件

应用程序-dev.properties

spring.flyway.locations=classpath:db/migration/{vendor}

Since, H2数据库由Spring boot配置时H2驱动程序位于类路径上。我们不需要显式地配置它。

应用程序测试.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/db_test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.flyway.locations=/db/{vendor}/common,/db/{vendor}/test

应用程序产品属性

spring.datasource.url=jdbc:postgresql://localhost:5432/db_prod
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.flyway.locations=/db/{vendor}/common,/db/{vendor}/prod
  1. Flyway 迁移文件位置。

如果你注意到的话,我没有使用过db/migration under src/main/resources放置迁移文件,这是默认位置。原因很简单,Flyway 会选择此位置下的所有文件,这会导致不同环境的文件之间存在版本冲突。例如V2__data_insertion.sql存在于所有三个环境中,如果它们嵌套在下面,则这将不起作用db/migration。自从,H2迁移文件与默认配置文件相关,我已将它们留在默认的 Flyway 迁移文件位置。

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Spring 配置文件设置 Flyway 迁移文件位置 的相关文章

  • 在 Spring Boot 中哪里定义所有环境中通用的属性?

    我几乎没有所有环境共有的属性 例如spring jpa properties hibernate ejb interceptor 我将其保存在资源目录下的 application properties 中 我在基于环境的属性文件中定义了数据
  • 从 Spring Boot 发送推送通知

    我有一个 springboot 应用程序 托管在我自己的家庭服务器上 我也有 sql 数据库设置 对于前端 我计划使用 android 进行初始测试阶段 然后将其转移到 flutter 我想知道如何将通知从 Spring Boot 发送到前
  • 使用 Jackson 和 Spring 序列化 Joda DateTime

    我在使用 Spring Boot 和 Jackson databind 2 5 2 将 Joda DateTime 从 java 序列化和反序列化为 json 并再次返回时遇到问题 我的 pom xml 看起来像这样
  • 如何从传统的java web应用程序(带有web.xml)迁移到spring boot?

    我想将我的项目切换到基于弹簧的产品 我的第一步是将我的 java web 应用程序从生成的 WAR 文件转换为由 spring boot 提供支持的独立可执行 jar 让我们从 github 中获取一个开源 Web 应用程序示例 Vaadi
  • 扩展 SimpleJpaRepository

    当我想扩展时我正在使用 Spring BootSimpleJpaRepository像这样的界面 public interface BaseRepository
  • spring boot:如何动态设置 spring 属性

    Spring Boot应用程序的application properties中可以定义很多属性 但我想传递属性以将 ssl 配置为从代码内部启动 server ssl enabled true The format used for the
  • Spring MVC 3 中的表单提交 - 说明

    我在理解 Spring 3 MVC 中的表单提交如何工作时遇到问题 我想做的是创建一个控制器 它将获取用户的名字并将其显示给他 不知怎的 我已经做到了 但我不太明白它是如何工作的 所以 我有一个看起来像这样的表格
  • WebFlux 应用程序中的 WebFilter

    我有一个使用 Spring Boot 2 0 0 M5 2 0 0 BUILD SNAPSHOT 的 Spring Boot WebFlux 应用程序 我需要将跟踪 ID 添加到所有日志中 为了让它在 WebFlux 应用程序中工作 我尝试
  • 找不到元素“ehcache”的声明

    我正在我的 Web 应用程序中实现 url 缓存 运行时 ehcache xml 文件出现错误 我正在使用 spring 2 5 jar 文件 ehcache xml
  • hibernate session.flush 和 spring @transactional

    我在我的应用程序中使用 Spring 和 Hibernate 并使用 Spring Transaction 所以我有一个带注释的服务层 Transaction方法和 DAO 层具有数据库查询方法 Transactional readOnly
  • 什么时候选择Spring框架?

    HI 我想知道什么时候我们必须选择Spring框架 选择spring框架有什么明显的优势吗 我不想知道其中的差异 而是选择其他技术 如 J2EE 等 为什么我们特别选择 Spring 问题是您是在谈论核心 Spring 框架 还是 Spri
  • 使用 Morphia 配置 Spring Boot?

    我不想利用 Spring DATA MongoDB 支持 我想利用名为 Morphia 的 MongoDB ORM https github com mongodb morphia https github com mongodb morp
  • 无法使用 Mockito 模拟 Spring-Data-JPA 存储库

    我正在尝试为服务编写测试 但我没有成功地嘲笑repository依赖性 其他非存储库依赖项已成功模拟 存储库实例始终是实际实现 而不是模拟实例 我正在使用 Spring Boot 和 Spring Data JPA 来构建应用程序 Mock
  • Spring MVC - 为什么部署上下文时出现 NoSuchMethodError 异常?

    尽管这个项目已经为我工作了一段时间 但现在当我尝试在 Tomcat 中部署应用程序上下文时遇到异常 Servlet testapp threw load exception java lang NoSuchMethodError org s
  • Spring 中 JavaConfig 相对于 XML 配置的优势?

    早些时候 配置曾经在代码中硬编码 后来它被外部化到 property 文件 为了避免硬编码值 避免为了更改配置而更改代码 等等 然后它转移到 XML 为了为了更加标准化 无错误等 现在 在阅读 Spring 3 中的 Configurati
  • 如何找到类路径上具有特定方法注释的所有类?

    我想在Java中实现一个基于注释的初始化机制 具体来说 我定义了一个注释 Retention RetentionPolicy RUNTIME Target ElementType METHOD public interface Initia
  • 有没有好的带有 TaskExecutor 的 Spring 线程示例? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我试图了解如何在使用 Spring 进行事务管理的 Java 应用程序中实现线程 我在中找到了 Tas
  • 如何使用flyway将数据从一个DB迁移到另一个DB?

    我在不同的服务器上有两个 postgreSql DB 比如说 A 和 B 我可以使用 Flyway 一些如何将所有数据从 DB A 复制到新设置且为空的 B 如果有人指出我正确的方向和工具 这将很有帮助 要求是通过某种工具自动化将数据从一个
  • kafka Avro 多个主题的消息反序列化器

    我正在尝试以 avro 格式反序列化 kafka 消息 我使用以下代码 https github com ivangfr springboot kafka debezium ksql blob master kafka research c
  • 如何在 Spring Boot 中创建 Apache POI Excel 视图配置

    当我想使用 Spring Boot Web 将数据导出到 Excel 时遇到问题 我使用 Thymeleaf 作为模板引擎 由 Spring Boot 自动配置 但是当我在附加配置中添加 XmlViewResolver 时 由 XmlVie

随机推荐

  • 我可以在 python 中获得没有 echo 的控制台输入吗?

    我可以在 python 中获取没有 echo 的控制台输入吗 Use getpass http docs python org library getpass html gt gt gt from getpass import getpas
  • Primefaces 中的过滤数据表仅有效一次

    我正在尝试使用 Primefaces 过滤数据表 就像这个例子 http www primefaces org showcase ui datatableFiltering jsf 在网络浏览器中 我输入要过滤的文本 它会工作一次 但是当我
  • Python Asyncio 子进程永远不会完成

    我有一个简单的 python 程序 我用它来测试带有子进程的 asyncio import sys time for x in range 100 print processing s 100 x sys stdout flush prin
  • cmd的字符集

    C Users Kolink gt php r echo C Users Kolink gt echo 正如你所看到的 一个程序输出一个 结果是 但使用echo命令给出所需的字符 并且 我可以配置 PHP 也许是脚本开头的某个命令 来输出正
  • 需要新版本后 Firebase 参考为空

    The new 文档 https firebase google com docs database server start authenticate with admin privileges提供了一种初始化 firebase 的简单方
  • 什么是受污染的对象,我们什么时候应该清除它们?

    什么时候需要对 Ruby 对象进行污染 什么时候应该消除它们的污染 受污染对象的概念如何使 Ruby 脚本在安全模式下运行 任何人都可以详细说明这一点 通过一些代码片段使概念清晰吗 什么是污染 根据定义 用户输入被污染了 例如 string
  • jQuery UI、可拖动、可放置、自动滚动

    我有一组可放置的 li 元素 它接受可拖动的图标 项目列表位于可滚动的 div 元素中 我在这里整理了一个简单的例子 http www nerdydork com demos dragscroll http www nerdydork co
  • 当用另一个图像替换它时,防止悬停时图像闪烁(CSS)

    当我在页面加载后第一次将光标悬停在徽标上时 它开始快速闪烁大约一秒钟 我考虑过使用精灵 但我不想将徽标设置为背景图像 我已经有了一个 这是我的 CSS 代码
  • R Shiny - 将 csv 下载到工作目录

    我有一个 Shiny 应用程序 我想在其中完成以下任务 1 用户按下按钮 2 数据框导出为 csv 保存在工作目录 包含 server R 和 ui R 中 或者最好保存在下一级目录中 我希望这种情况自动发生 因为最终我会将其与 check
  • 如何以编程方式将用户锁定到 iOS 6 中的单一应用程序模式?

    有一些与此相关的问题 但得到确切的答案 锁定 iPhone iPod iPad 使其只能运行一个应用程序 https stackoverflow com questions 5011774 lock down iphone ipod ipa
  • __syncthreads() 死锁

    如果只有部分线程执行 syncthreads 会导致死锁吗 我有一个这样的内核 global void Kernel int N int a if threadIdx x
  • 哪个对缓存最友好?

    我试图很好地掌握面向数据的设计以及如何在考虑缓存的情况下进行最佳编程 基本上有两种情况我无法完全确定哪个更好以及为什么 是拥有一个对象向量更好 还是拥有对象原子数据的多个向量更好 A 对象向量示例 struct A GLsizei mInd
  • NSFetchedResultsChangeUpdate 被触发而不是 NSFetchedResultsChangeDelete

    我有一个 NSFetchedResultsController 通过以下方式启动 NSEntityDescription myEntity NSEntityDescription entityForName MyEntity inManag
  • 逐列读取 CSV 文件

    我想从多列 csv 文件中读取特定列 并使用 Java 在其他 csv 文件中打印这些列 有什么帮助吗 以下是我逐行打印每个标记的代码 但我希望只打印多列 csv 中的几列 import java io BufferedReader imp
  • Ngx-datatable cellClass 不工作

    我尝试将自定义 css 附加到 ngx datatable 单元格
  • 将某些软件包的 nuget 软件包更新限制为当前版本

    有没有办法禁用项目中安装的特定 nuget 包的更新 我已经对几个 javascript 库包进行了一些本地修改 并且不想冒将来有人更新我的更改的风险 我从未创建过自己的 nuget 包 我猜一种选择可能是分叉现有的包 你可以尝试约束包 h
  • 检查变量是否存在 - Terraform 模板语法

    我正在尝试使用 terraform 模板语法检查模板文件中是否存在变量 但出现错误This object does not have an attribute named proxy set header cat nginx conf tm
  • JavaScript 文件中的代码如何获取文件的 URL?

    我需要将 CSS 样式表动态加载到位于不同的领域 如何获取 JS 文件的完整 URL 以在href样式表的属性 例如 结构如下 http bla com js script js http bla com css style css 我想将
  • 与 jQuery 配合使用的backbone.js 替代品?

    有没有像backbone js这样的东西的替代品 它为你的前端javascript提供了一些框架 结构 但没有任何不需要的依赖项 并且与jQuery更紧密地结合在一起 您需要一个易于使用的 MVC 框架吗 因为Sammy js http s
  • 如何使用 Spring 配置文件设置 Flyway 迁移文件位置

    我有两个 Spring 配置文件dev and test配置为开发和测试环境 在每个环境中我使用不同的数据库即h2在开发和postgresql在测试中 以下是每个配置文件的我的属性文件 其中 vendor 由 spring boot 解决h