1

我在带有 liquibase-maven-plugin 的 java ee 项目中使用工具 liquibase 进行数据库更改。到目前为止,我在本地机器上进行了尝试,但需要在生产中进行下一步。

本地我可以进行更新、回滚、将标签作为一种检查点和替换备份。更新已经完全自动化。它在项目运行之前执行:

<plugin>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-maven-plugin</artifactId>
  <version>2.0.5</version>
  <configuration>
    ..
  </configuration>
  <executions>
    <execution>
      <phase>process-resources</phase>
      <goals>
        <goal>update</goal>
      </goals>
    </execution>
  </executions>
</plugin>

我可以进行回滚并将标签放在命令行中,例如:

mvn liquibase:tag -Dliquibase.tag=release1
mvn liquibase:rollback -Dliquibase.rollbackTag=release1

在生产服务器上,我希望一切都完全自动化。当部署失败并且我需要返回项目的原始版本时,我主要对 db-rollbacks 感兴趣。
设置标签应该像如何在 liquibase 中将变更集标记为回滚中所述那样工作。

但是如何完全自动化地管理回滚呢?

  1. 是否也可以制定回滚目标?如果是:我如何控制它的执行时间?我不想在项目中意外创建一个循环,调用更新和回滚无穷无尽。

通常的做法是:backup1、update、run。如果失败,您将返回备份 1。这是自动可能的吗?恐怕一旦发生故障(在运行项目时),您将无法再自动执行回滚。

4

1 回答 1

0

我不相信在 Maven 中动态启用/禁用插件执行是可能的。您必须提前知道更新是否成功,当然您不会。

但是,您可以在Ant中执行此操作,方法是在更新过程运行后设置成功/失败属性。您可以通过Maven AntRun 插件轻松地将 Ant 脚本连接到 Maven 。

于 2013-03-22T12:41:37.603 回答