如何在构建工件中包含数据库迁移脚本

时间:2017-06-28 06:09:57

标签: java migration liquibase flyway

来自Martin Fowler的这篇优秀article

  

构建成功完成后,CI服务器将构建工件打包并发布它们。这些构建工件包含数据库迁移脚本,因此它们可以应用于下游环境中的数据库(...)

我的问题是如何在实践中实现基于Java的工作流程?构建工件通常是.war,.jar或.ear文件,并发布到Nexus,Archiva或Artifactory服务器。迁移脚本是否可以包含在这些工件中,以便可以在不对目标环境进行任何修改的情况下执行迁移?可以使用像Flyway或Liquibase这样的工具吗?

2 个答案:

答案 0 :(得分:0)

是的!我们(Flyway)强烈建议您将迁移打包到您的应用程序并在启动时运行它们。这样,您可以确保数据库始终包含应用程序当前版本所需的对象(表,视图,存储过程......)。

答案 1 :(得分:0)

我们使用maven来构建人工制品,我们在src / main / resources / db / migration文件夹下有flyway迁移脚本。

App是一个弹簧网络应用程序,在春季容器启动期间,它运行Flyway迁移。如果出现问题,应用程序永远不会启动。

这样我们就可以确保数据库状态是应用启动时所需要的。