Flyway数据库迁移工具
来源:互联网 发布:淘宝网分期付款流程 编辑:程序博客网 时间:2024/04/27 17:01
什么是Flyway
Flyway(https://flywaydb.org) 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。
为什么需要Flyway
- 不同的开发人员在开发产品特性时,都有可能更新数据库(添加新表,新的约束等)。当开发人员完成工作并提交代码时,代码会被合并到主分支并在测试服务器上执行单元测试与集成测试。同样的需要有配套的数据库脚本更新。
- 生产系统的自动部署
Flyway使用步骤
Maven依赖定义
<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>4.0.3</version></dependency>
Maven插件方式
<build><pluginManagement><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><executions><execution><id>default-cli</id><phase>initialize</phase><goals><goal>read-project-properties</goal></goals><configuration><files></files></configuration></execution></executions></plugin><plugin><groupId>org.flywaydb</groupId> <artifactId>flyway-maven-plugin</artifactId><version>4.0.3</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency></dependencies> <configuration><<!-- 设置存放flyway metadata数据的表名 --><table>schema_version</table><!-- 设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径 --><locations><location>db/migration/reportdb</location></locations><!-- 设置sql脚本文件的编码 --><encoding>UTF-8</encoding><!-- 设置执行migrate操作之前的validation行为 --><validationMode>ALL</validationMode><!-- 设置当validation失败时的系统行为 --><validationErrorMode>FAIL</validationErrorMode></configuration></plugin></plugins></pluginManagement></build>
- 将sql脚本放在 src/main/resources/db/migration下,命名为 Vxx__xxxxx.sql
SQL 脚本文件及Java 代码类名必须遵循以下命名规则:V<version>[_<SEQ>][__description]
- 执行maven goal,mvn flyway:migrate
在不同环境从properties中加载不同的数据库配置
配置maven profile。注意需要在每个profile里声明
<profile.id>prod</profile.id>
<profiles><!-- 开发环境 --><profile><activation><activeByDefault>true</activeByDefault></activation><id>dev</id><properties> <profile.id>dev</profile.id> </properties><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/env/dev</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource></resources></build></profile><profile><activation><activeByDefault>false</activeByDefault></activation><id>test</id><properties> <profile.id>test</profile.id> </properties><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/env/test</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource></resources></build></profile><profile><activation><activeByDefault>false</activeByDefault></activation><id>prod</id><properties> <profile.id>prod</profile.id> </properties><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/env/prod</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource></resources></build></profile></profiles>
使用properties-maven-plugin插件从properties中加载配置项的值
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><executions><execution><id>default-cli</id><phase>initialize</phase><goals><goal>read-project-properties</goal></goals><configuration><files><file>src/main/env/${profile.id}/properties/datasource.properties</file></files></configuration></execution></executions></plugin>
修改maven goal 为
properties:read-project-properties flyway:migrate
附录
Flyway Maven Goal
开源地址
https://flywaydb.org/documentation/maven/#href=https%3A%2F%2Fgithub.com%2Fflyway%2Fflyway&text=Star&data.count.api=%2Frepos%2Fflyway%2Fflyway%23stargazers_count&data.count.href=%2Fflyway%2Fflyway%2Fstargazers&data.count.aria.label=%23%20stargazers%20on%20GitHub&data.style=&data.icon=&aria.label=Star%20flyway%2Fflyway%20on%20GitHub
0 0
- Flyway数据库迁移工具
- 开源数据库迁移工具 – Flyway
- 玩玩儿Flyway:数据库迁移
- 数据库迁移、版本控制管理工具-Flyway
- 使用Gradle整合Flyway进行数据库迁移
- SpringBoot之开启数据库迁移的FlyWay使用
- 数据迁移 flyway
- 数据库版本管理工具flyway
- 数据库版本管理工具flyway
- 数据库版本管理工具Flyway
- 数据库版本管理工具-flyway
- 数据库版本管理工具Flyway
- Flyway 数据库版本管理控制
- TimesTen数据库迁移工具 - ttMigrate
- 数据库迁移工具DataX-Migration
- 轻松上手数据库版本管理工具Flyway
- 数据库版本控制插件Flyway Q&A
- Flask 数据库迁移工具 flask-migrate
- CentOS 6.6 下Samba服务器的安装与配置
- ngx_lua 模块API说明
- TextInputLayout应用
- Python version 2.7 required, which was not found in the registry
- CentOS 上jdk与tomcat的安装与启动
- Flyway数据库迁移工具
- Cocos2d-x 3.x 图形学渲染系列十四
- NetBeans中文显示为空格解决与Java Annotation
- {编程实例}:1.【用结构体实现两个数的求和】
- AFNetworking3.1.0源码分析(十一)之AFSecurityPolicy验证服务器信任
- 4.Oracle:Power Design16---CDM, PDM的使用
- apk文件解析
- Server Tomcat v7.0 Server at localhost failed to start.解决办法
- js字符串转化为json对象,你应该避开的那些坑