Jakarta ee 在生产部署时使用liquibase自动回滚

Jakarta ee 在生产部署时使用liquibase自动回滚,jakarta-ee,maven,liquibase,Jakarta Ee,Maven,Liquibase,我在一个带有liquibase maven插件的JavaEE项目中使用liquibase工具进行数据库更改。到目前为止,我在我当地的机器上试用过,但需要在生产中进行下一步 本地我可以进行更新、回滚、将标记作为一种检查点并替换备份。更新已经完全自动化。其在项目运行前执行: <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artif

我在一个带有liquibase maven插件的JavaEE项目中使用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>
在poduction服务器上,我希望一切都完全自动化。我主要对部署失败时的db回滚感兴趣,我需要返回到项目的私有版本。
设置标记的工作方式应如中所述

但是我如何管理完全自动化的回滚

  • 是否也可以为回滚制定目标?如果是:如何控制何时执行?我不想在项目中意外地创建一个调用update和rollback的循环

  • 通常的做法是:备份、更新、运行。如果失败,请返回backup1。这是自动可能的吗?我担心一旦某个东西失败(在运行项目时),您就不能再自动执行回滚了。

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

    但是,您可以通过在更新过程运行后设置success/failure属性来实现这一点。您可以通过连接将Ant脚本轻松地连接到Maven中

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