Liquibase
在 IntelliJ IDEA 2024.1 版本之前,部分 Liquibase 功能仅可通过 JPA Buddy 插件 使用。 下方视频演示了这些现在可以通过 Liquibase 插件使用的功能。
要启用相应功能,请确保项目包含 Liquibase 依赖项。 它还提供了一系列操作,可以快速生成更改日志、运行它们、预览 SQL 语句等。
将 Liquibase 添加到现有项目中。?
在编辑器中打开构建文件( pom.xml 或 build.gradle ,具体取决于项目中使用的 构建工具)。
添加 Liquibase 库,并确保其版本与项目的其余部分匹配:
<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.32.0</version> </dependency>implementation 'org.liquibase:liquibase-core:4.32.0'implementation("org.liquibase:liquibase-core:4.32.0")(可选)如果要使用 Maven 或 Gradle 运行 Liquibase 命令,请添加专用插件:
<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>5.0.4</version> <configuration> <url>${YOUR_DATABASE_URL}</url> <username>${YOUR_DATABASE_USERNAME}</username> <password>${YOUR_DATABASE_PASSWORD}</password> </configuration> </plugin>有关配置插件的更多信息,请参阅 Liquibase 官方文档。
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.liquibase:liquibase-core:5.0.4' } } plugins { id 'org.liquibase.gradle' version '3.1.0' } dependencies { liquibaseRuntime 'org.liquibase:liquibase-core:5.0.4' liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:4.0.1' liquibaseRuntime 'info.picocli:picocli:4.7.7' liquibaseRuntime '<DATABASE DRIVER>' } liquibase { activities { main { changelogFile 'src/main/resources/db/changelog/db.changelog-master.xml' url '<YOUR DATABASE URL>' username '<YOUR DATABASE USERNAME>' password '<YOUR DATABASE PASSWORD>' } } }有关配置插件的更多信息,请参阅 GitHub 上的 Liquibase Gradle Plugin 仓库。
buildscript { repositories { mavenCentral() } dependencies { classpath("org.liquibase:liquibase-core:5.0.4") } } plugins { id("org.liquibase.gradle") version "3.1.0" } dependencies { liquibaseRuntime("org.liquibase:liquibase-core:5.0.4") liquibaseRuntime("org.liquibase:liquibase-groovy-dsl:4.0.1") liquibaseRuntime("info.picocli:picocli:4.7.7") liquibaseRuntime("<DATABASE DRIVER>") } liquibase { activities.register("main") { arguments = mapOf( "changelogFile" to "src/main/resources/db/changelog/db.changelog-master.xml", "url" to "<YOUR DATABASE URL>", "username" to "<YOUR DATABASE USERNAME>", "password" to "<YOUR DATABASE PASSWORD>" ) } }有关配置插件的更多信息,请参阅 GitHub 上的 Liquibase Gradle Plugin 仓库。
按 Ctrl+Shift+O 导入更改。
生成初始变更日志。
借助 IntelliJ IDEA,可以根据实体类中提供的映射初始化数据库架构。 它将为您当前的实体生成一组 DDL 命令,以 Liquibase 更改日志 的形式呈现。
打开 Persistence 工具窗口。
在工具窗口中,右键点击持久化单元、映射上下文或实体,然后选择 。
在打开的 初始化架构更新日志 对话框中,选择迁移应基于的数据模型:
模型 :来自以下项之一的实体映射:
数据库 :来自 已连接的数据库 的架构

根据所选内容,IntelliJ IDEA 会自动填写持久化单元、映射上下文或数据库连接,必要时可以更改。
点击 OK。
在打开的 变更日志预览对话框中,配置变更日志并点击 保存。
更新日志预览窗口

如果要将变更日志保存为常规文件,则可使用以下配置选项:
目录 和 文件名 字段负责配置生成的更改日志的位置。 如果已存在具有指定名称的更改日志,您将收到一个警告提示,然后更改将被追加到该更改日志中。
您可以使用 包含到、 包含文件夹 和 包含上下文 来指定是否应在另一个 更改日志 中包含变更日志。 如果您勾选 包含文件夹 框,它会生成整个文件夹的 include 语句,而不仅仅是当前的 更改日志。
从 文件类型 下拉列表中,您可以选择 Liquibase 支持的四种文件类型之一(YAML、JSON、SQL、XML),IntelliJ IDEA 将在这些文件中生成变更日志。
如果您希望将变更日志保存为临时文件,那么您只能配置其名称和类型。

窗口的左侧显示将生成的更改集预览。 您可以点击每个更改以查看其外观。 要将多个更改合并到一个更改集中或忽略它们,只需拖放即可。 预览窗口的左上角包含各种用于修改最终变更日志的操作:

提供以下操作:
添加更新日志 — 创建次要更新日志
添加变更集 — 在选定的更改日志中创建一个新的更改集
从更改日志中移除 具有以下选项:
从更改日志中移除 — 只需从当前变更日志中删除更改
移除并忽略 — 移除这些更改并将其添加到 已忽略 ,这样它们也可以从未来的变更集中排除
从忽略状态还原 — 将更改从 已忽略 移动到更改日志
设置上下文 (用于变更集)
设置标签 (用于变更集)
显示其他操作 — 根据危险等级选择所有更改,展开/折叠所有更改
创建空变更日志
打开 项目 工具窗口(Alt+1)。
右键点击包含变更日志的文件夹,然后选择 。
或者,选择文件夹,按 Alt+Insert ,然后选择
Liquibase 空更新日志。
在打开的 新建 Liquibase 更新日志 弹出窗口中,指定文件名并选择格式(XML 或 YAML)。
IntelliJ IDEA 会使用 Liquibase 更新日志 模板(来自 文件和代码模板 )创建变更日志,并在编辑器中打开它。
主要和次要更新日志
IntelliJ IDEA 允许您将变更记录分为两类:主要和次要。 一种用例是分离可以自动运行的安全更改与需要您注意且手动运行的更改。
可以按类型自动分隔更改(在 中)。 或者,您可以使用 添加更新日志 操作在“预览”窗口中手动创建次要变更日志。 然后,您可以简单地将所需的变更集拖到新的变更日志中。
默认情况下,Primary 和 Secondary 变更日志会生成在不同的目录中,您可以在插件设置中进行自定义。 请在 部分的 IDE 设置中了解更多信息。
生成差异变更日志
确保 IntelliJ IDEA 已 连接到数据库。
打开 数据库 工具窗口,右键点击数据库或表,然后选择
创建 Liquibase 更新日志…。
或者,打开 持久化 工具窗口,右键点击持久化单元、映射上下文或实体,然后选择 。
在打开的 差异数据库更新日志 对话框中,选择要比较的数据模型:
源(referenceURL) (当前数据模型):
目标(URL) (先前数据模型):
数据库 :来自已连接数据库的架构
快照 :来自 数据模型快照 的架构

如果选择 数据库 或 模型 ,IntelliJ IDEA 会自动填写持久化单元、映射上下文或数据库连接,必要时可以更改。
点击 OK。
在打开的 变更日志预览对话框中,配置变更日志并点击 保存。
使用结构工具窗口浏览更改日志
如果您的 Liquibase 更改日志文件中有许多更改集, 逻辑视图的 结构 工具窗口可以帮助您快速预览文件并浏览其中的内容。 它将更改类型显示为单独的节点,您可以展开这些节点以获取更多详细信息。
逻辑视图适用于 XML 和 YAML 更改日志文件。
在编辑器中打开您的更改日志文件后,打开 结构 工具窗口: 。
或者按 Alt+7。
在 结构 工具窗口中,打开 逻辑 选项卡。
点击任意更改以导航到更改日志文件中的定义。 对于
包括和includeAll标签,您将被重定向到包含文件中的更改集。

部署更改
准备好更改日志后,可使用专用 Liquibase 运行配置 触发更新并使数据库与代码同步。 可以从 IntelliJ IDEA 中的多个位置启动此运行配置。
从运行微件运行更新
如果微件中已选中 Liquibase 运行配置,请点击
运行。
或者按 Shift+F10。
如果运行微件中选择了其他配置,请点击其名称。 在弹出窗口中,找到 Liquibase 运行配置并点击其右侧的
运行。
或者按 Alt+Shift+F10。 在弹出窗口中,选择 Liquibase 运行配置。
IntelliJ IDEA 会在 运行 工具窗口中启动运行配置。
从工具窗口运行更新
可以在以下工具 Windows 启动 Liquibase 运行配置:
持久性工具窗口:
右键点击工具窗口中的任意位置,然后选择
运行 Liquibase 更新…。
数据库工具窗口:
转到工具栏并选择
运行 Liquibase 更新…。
右键点击数据库、架构或表,然后选择
运行 Liquibase 更新…。
IntelliJ IDEA 会在 运行 工具窗口中启动运行配置。
从根更改日志运行更新
可以直接从 根变更日志文件启动 Liquibase 运行配置,前提是配置文件中的 spring.liquibase.change-log 属性指向它。
在编辑器中打开根变更日志文件。
在 装订区域 ,点击
运行 Liquibase 更新…。

IntelliJ IDEA 会在 运行 工具窗口中启动运行配置。
从配置文件运行更新
可以从以下文件启动 Liquibase 运行配置:
Liquibase 配置文件( liquibase.properties )
Spring Boot 配置文件( application.properties 或 application.yml )
在编辑器中打开配置文件。
在 装订区域中,点击
运行 Liquibase 更新…。
IntelliJ IDEA 会在 运行 工具窗口中启动运行配置。
更改日志和更改集的状态
通常,如果要检查哪些变更日志已应用,需要运行 Liquibase 的 变更跟踪命令 ,或在数据库中检查其 变更日志表。 IntelliJ IDEA 通过在 IDE 中直接显示更改的状态,提供了更快捷的替代方式。
整个更改日志文件的状态会显示在 项目 工具窗口中(Alt+1)。

每个更改日志由 Liquibase 徽标 () 表示,其状态由徽标右下角的小图标反映:
图标 | 状态 |
|---|---|
更改日志中的所有更改集已成功应用到数据库。 | |
更改日志已运行,但其中有更改集失败。 将鼠标悬停在文件名称上可查看更多错误信息。 ![]() 要检查哪个更改集导致错误,请在编辑器中打开带下划线的更改日志,并查找装订区域中的红色感叹号。 可以点击装订区域图标以再次查看错误详细信息。 | |
(无) | 在以下情况下不会显示状态图标:
|
打开更改日志文件时,各更改集的状态会显示在编辑器装订区域。

Liquibase 运行配置
Liquibase 运行配置可让您无需运行完整应用程序或使用终端,即可将更改部署到已连接的数据库。 底层该配置会运行 Liquibase 更新命令。
创建 Liquibase 运行配置

运行配置选项
条目 | 描述 |
|---|---|
名称 | 在编辑或运行时,指定运行配置的名称以便快速识别。 |
存储为项目文件 | 将运行配置设置保存到文件中,以便与其他团队成员共享。 默认位置是 .idea/runConfigurations 。 但是,如果您不想共享 .idea 目录,您可以将配置保存到项目内的任何其他目录。 默认情况下,此选项是禁用的,IntelliJ IDEA 将运行配置设置存储在 .idea/workspace.xml 。 |
必填选项
其他选项
要将这些选项添加到运行配置中,请在对话框右侧选择 修改选项 ,然后从列表中选择相关选项。
条目 | 描述 |
|---|---|
上下文 | 指定 上下文筛选器以缩小 Liquibase 在更新期间要运行的更改集范围。 如需填写多个值,请用逗号分隔。 |
标签 | 指定 标签筛选器以缩小 Liquibase 在更新期间要运行的更改集范围。 如需填写多个值,请用逗号分隔。 |
默认架构 | 指定 Liquibase 需要管理的架构。 可在 Liquibase 官方文档中详细了解该设置。 |
Liquibase 架构 | 指定 Liquibase 用于创建 跟踪表的架构。 可在 Liquibase 官方文档中详细了解该设置。 |
日志级别 | 选择在更新过程中需要被日志记录的最低严重级别。 可在 Liquibase 官方文档中详细了解该设置。 |
Liquibase 设置

基础设置
条目 | 描述 |
|---|---|
Liquibase 版本 | 指定项目中要使用的 Liquibase 版本。 如果此字段为空,IDE 将使用构建文件中的版本。 |
更改集作者 | 为生成的更改集中的 如果此字段为空,IDE 将使用操作系统的用户名。 |
文件类型 | 选择生成更新日志时要使用的语言:
|
向不支持隐式更改集的更改集添加空回滚 | 自动为更改类型不支持 自动回滚的更改集添加空的 要了解如何编写回滚语句,请参阅 官方 Liquibase 文档。 |
更新日志模板
每当创建空的或增量的 Liquibase 更改日志 时,IntelliJ IDEA 会根据模板生成文件名。 您可以配置主/副目录和变更日志的名称。
以下变量和宏可用于精确配置:
#increment(<start>, <step>, <decimalFormat>):使用数字序列生成版本。start:首个迁移的版本号step:每个版本号的递增值decimalFormat:用于格式设置版本号的 DecimalFormat 模式
#date(<simpleDateFormat>):使用当前系统日期生成版本。simpleDateFormat:用于格式设置日期的 SimpleDateFormat 模式
${semVer.<getterMethod>}:使用项目构建文件中的 语义版本生成版本。getterMethod:提取语义版本特定段的方法。 以下是 1.2.3-SNAPSHOT+build4 版本的示例:${semVer.getRawVersion()}:1.2.3-快照+build4${semVer.getMajor()}:1${semVer.getMinor()}:2${semVer.getPatch()}:3${semVer.getPreRelease()}:快照
数据库类型
有时软件必须支持几种 DBMS 类型。 在这种情况下,Liquibase 是最佳选择,因为它提供了一个跨数据库的解决方案来声明 DDL 修改。 IntelliJ IDEA 也支持此解决方案。 在生成跨数据库变更日志时,它使用 Liquibase 属性来为每个 DBMS 指定正确的数据类型:
因此,无需为不同的 DBMS 创建单独的变更日志。
更改集模板
更改集模板 设置允许为每种 变更类型预定义常用更改集特性。 每次 生成更新日志时,IntelliJ IDEA 会自动将它们插入相应的更改集。
条目 | 描述 |
|---|---|
选择当 Liquibase 在执行更改集时遇到错误时的处理方式:
| |
选择当 Liquibase 检测到已执行的更改集被修改时的处理方式:
| |
创建前提条件 | 自动为更改集添加相关 前置条件 ,并选择不满足时的处理方式:
|
JPA Buddy 功能
您可以安装 JPA Buddy 插件,以获得对 Liquibase 的更多支持:
JPA 设计器
JPA 设计器 工具窗口允许您生成和修改代码。
在工具窗口(JPA Palette)的上部,选择一个操作,例如, 创建 ,然后双击一个元素,例如, 表。
工具窗口的下半部分(JPA Inspector)会根据所选的变更日志元素进行调整,例如 changeSet,并允许您修改其属性。
要了解有关 JPA Designer 的更多信息,请参阅 实体设计器。

编辑器工具栏
编辑器工具栏提供对相关操作的快速访问。 其中包括:
在 JPA 结构中选择已打开文件的操作
JPA Palette 中的所有操作
初始化架构更改日志操作
差异更改日志操作

JPA Buddy 理解您的数据模型,并尽可能预填更改集。 借助 JPA Inspector,您可以查看每个 更改日志 元素的属性:

故障排除
- 无法从配置文件运行迁移进程
确保:
已在项目的构建文件中 添加 Liquibase 依赖。
已 连接到对应数据库 ,且连接在 数据库 工具窗口中处于活动状态。
配置文件( application.properties 或 application.yml )满足如下条件:
spring.liquibase.change-log指向您的根更改日志文件。spring.liquibase.url或spring.datasource.url与用于连接数据库的 URL 匹配。
- 未显示状态图标的更改日志或更改集
确保:
已在项目的构建文件中 添加 Liquibase 依赖。
已 连接到对应数据库 ,且连接在 数据库 工具窗口中处于活动状态。
配置文件( application.properties 或 application.yml )满足如下条件:
spring.liquibase.change-log指向您的根更改日志文件。spring.liquibase.url或spring.datasource.url与用于连接数据库的 URL 匹配。spring.liquibase.default-schema与已更新的数据库架构匹配。
已 运行 Liquibase 更新 ,其结果已记录在 数据库变更日志表中。
- 无法从配置文件运行迁移进程
确保:
已在项目的构建文件中 添加 Liquibase 依赖。
已 连接到对应数据库 ,且连接在 数据库 工具窗口中处于活动状态。
配置文件( liquibase.properties )符合以下条件:
changeLogFile指向您的根更改日志文件。url与用于连接数据库的 URL 匹配。
- 迁移不显示状态图标
确保:
已在项目的构建文件中 添加 Liquibase 依赖。
已 连接到对应数据库 ,且连接在 数据库 工具窗口中处于活动状态。
配置文件( liquibase.properties )符合以下条件:
changeLogFile指向您的根更改日志文件。url与用于连接数据库的 URL 匹配。defaultSchemaName与已更新的数据库架构匹配。
已 运行 Liquibase 更新 ,其结果已记录在 数据库变更日志表中。

