我使用工具liquibase在带有liquibase-maven-plugin的java ee项目中进行数据库更改。到目前为止,我在我的本地机器上试了一下,但需要在生产过程中进行下一步。
本地我可以做更新,回滚,将标签作为一种检查点和替换备份。此更新已完全自动化。它在项目运行之前执行:
<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
在poduction服务器上,我希望一切都完全自动化。当部署失败时,我主要对db-rollbacks感兴趣,我需要回到项目的私有版本。
设置标记应该像How to tag a changeset in liquibase to rollback中描述的那样工作。
但是如何完全自动化管理回滚?
通常的做法是:backup1,update,run。如果失败,请返回backup1。这是自动的吗?我担心一旦出现问题(运行项目时),你就不能再自动执行回滚了。
答案 0 :(得分:0)
我不相信可以在Maven中动态启用/禁用插件执行。您必须事先知道更新是否成功,当然您不会。
但是,您可以通过在更新过程运行后设置成功/失败属性来Ant执行此操作。您可以通过Maven AntRun plugin轻松地将Ant脚本连接到Maven。