Liquibase with Maven

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Liquibase 是一个用于关系型数据库的迁移管理工具。它在数据库中记录了模式和数据的变更版本,类似于 Git 或 SVN 对源代码的工作方式。由于有 Maven 插件 的存在,Liquibase 可以作为构建自动化场景的一部分使用。

假设您正在使用MySQL(PostgreSQL或任何其他数据库配置将非常相似)。

liquibase-maven-plugin添加到您的pom.xml中(在Maven中央仓库获取其最新版本)。

为了检查它是否工作正常,请运行mvn liquibase:help

我建议您将数据库凭据存储在settings.xml和其各自的配置文件中。例如:

当您运行Maven时,请不要忘记打开其中一个配置文件。例如:mvn -Pproduction

我假设您已经拥有一个有模式(表、触发器、视图等)和一些数据的数据库。您应该对其进行“反向工程”并为Liquibase创建一个初始模式文件。换句话说,我们应该告诉Liquibase我们目前的位置,以便它从这一点开始应用更改。

Maven插件不支持此功能,因此您需要直接运行Liquibase。但是,这并不难。首先,运行mvn liquibase:help以下载所有工件。然后,用您的实际凭据替换占位符。

Liquibase将分析您当前的数据库架构,并将其自己的架构复制到src/main/liquibase/2014/000-initial-schema.xml中。

现在,创建XML主更改集并将其保存到src/main/liquibase/master.xml

这是Liquibase的入口点。它从这个文件开始,并加载在src/main/liquibase/2014中可用的所有其他变更集。它们应该是.xml.sql文件。我建议你主要使用XML,因为它更容易维护且运行速度更快。

让我们创建一个简单的变更集,将一个新的列添加到现有表中:

我们将这个文件保存在src/main/liquibase/2014/002-add-user-address.xml。在大型项目中,您可以按照生成它们的工单的名称来命名您的文件。例如,045-3432.xml,表示来自工单 #3432 的第45个变更集。

重要的是在文件名前面加上这个数字前缀,以便正确排序它们。我们希望按照正确的时间顺序应用变更。

就是这样。我们准备运行mvn liquibase:update -Pproduction,我们的生产数据库将会被更新——一个新的列将被添加到user表中。

此外,看一下MySQL Maven插件如何帮助您自动化数据库相关类的集成测试。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:43

sixnines availability badge   GitHub stars