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 Central获取其最新版本)。

为了检查它是否正常工作,请运行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/36 on 2023-11-17 at 12:25

sixnines availability badge   GitHub stars