java - 创建 liquibase 变更集验证规则

标签 java maven liquibase

如何创建 liquibase 变更集自定义规则?

问题

我想在我的团队中制定规则,规定人们不会在不知情的情况下对 liquibase 进行危险的更改。我认为危险的事情,特别是那些使数据库无法用于旧版本应用程序的事情,使得回滚变得不可能。

我想到的解决方案 创建自定义规则来验证变更集,其中我们禁止以下更改: dropColumn、删除、dropTable、renameColumn

所有这些更改都会破坏 Maven 上的构建,除非对同一变更集有类似“我知道我在做什么”的评论。

问题

liquibase 是否提供任何可以创建此规则的扩展点?

最佳答案

您是否考虑过引入代码审查?另一方面,如果您的目标不是禁止使用 dropColumn,而是对其进行注释以确保开发人员知道他/她在做什么,那么您可以引入两个接口(interface),例如BackwardCompatibleLiquibaseBackwardInknownLiquibase - 第一个接口(interface)将包含“安全”方法,另一个接口(interface)将包含所有这些方法。

恕我直言,最好教育团队中的人员如何进行不会破坏数据库的更改,而不是引入变更集 validator ,因为如果没有人审查变更集,那么人们就有可能破解您的 validator 或添加示例对每个更改集注释“我知道我在做什么”,以便构建始终能够通过

关于java - 创建 liquibase 变更集验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56820861/

相关文章:

java - RMI:RMI Reaper 线程、UnicastRemoteObject 和Registry

java - 数组 if 语句并打印数组

java - 读取 jar/war 文件中的 maven.properties 文件

java - Google App Engine 和 Java org.reflection 库 - 扫描过程中出错

java - 使用 Liquibase 从现有数据库(包括存储过程)创建数据库变更日志 xml 文件

gradle - JHipster-无法在gradle构建中使用liquibase连接到dev postgres DB

postgresql - 如何使用 Liquibase 创建和删除 postgres 数据库?

java - 如何使用我自己的parent.pom而不是 "spring-boot-starter-parent"?

java - 如何管理/列出我的对象?

java - SonarQube FindBugs 分析器(带有 SpotBugs 3.1.0-RC6)不支持 JDK 11