首先,有一点背景.我有一套
Java应用程序,一些基于JPA,有些不是.要创建我的数据库,我正在使用Hibernates模式导出来为使用JPA的用户生成脚本.那些不使用JPA的人手动生成脚本.然后在使用ANT的应用程序安装期间运行这些.对于更新,应用程序安装程序只需将更新脚本应用于数据库.
为了改进数据库更新的管理,我一直在看Flyway和Liquibase.两者似乎几乎都是做我想要的(除此之外,我喜欢现在的Flyway,因为我们拥有的所有预先存在的sql / DDL脚本).我可以看到的问题是它们都直接更新数据库.这对于很多安装是不错的,但并不是全部.
我想做的是对数据库运行Flyway / Liquibase,并生成更新脚本,其中包含使数据库更新所需的所有更新,包括Flyway / Liquibase需要对其自己的表进行任何更改.这将允许我(或更重要的是数据库管理员)在应用程序之外运行更新脚本来更新数据库.我可以在我的应用程序中使用Flyway / Liquibase,仅仅是为了验证数据库是否是最新的.
有可能用Flyway或Liquibase或任何其他工具这样做吗?