文章目录
业务场景
随着项目版本迭代,数据库结构也会变动。如果一个项目引用其他项目的jar包,并且需要执行对应jar包的flyway脚本,就需要配置flyway.locations
场景一
正常情况下,在一个项目中可以在yml文件中指定多个flyway脚本的地址,比如:可以正常执行
java
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:postgresql://192.168.x.xx:5432/core
username: xxx
password: xxxxxxx
hikari:
poolName: Hikari
auto-commit: false
flyway:
enabled: true
schemas: public
encoding: UTF-8
locations:
- classpath:db/migration/db1
- classpath:db/migration/db2
场景二
但是如果该模块还引用了其他模块,该模块也有flyway需要执行,新增下述配置,但file/db/migration文件夹下的脚本不会生效
java
</dependencies>
<dependency>
<groupId>com.xx.xx</groupId>
<artifactId>infra-xx-xx</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
flyway:
locations:
- classpath:db/migration/db1
- classpath:db/migration/db2
- classpath:file/db/migration
解决方案
该配置文件必须配置在依赖模块的yml文件中