maven - 基于多个数据库的 Liquibase

标签 maven liquibase

我已经用 Maven 实现了 Liquibase。我们目前使用的是单个数据库 (db2),但现在我们需要向应用程序添加一个新数据库,该数据库将具有不同的对象。

我已经看到我可以在 maven 中定义一个新的配置文件,但我不知道如何区分在哪个数据库上创建了哪些对象。

这个问题有方法解决吗?我可以使用 liquibase 支持具有不同对象的 2 个不同数据库吗?

最佳答案

正如您在 documentation 中看到的那样,您可以使用两种不同的执行方式,如下所示:

<plugin>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-maven-plugin</artifactId>
  <version>3.0.5</version>
  <executions>
    <execution>
      <phase>process-resources</phase>
      <configuration>
        <changeLogFile>PATH_TO_CHANGELOG_1</changeLogFile>
        ... connection properties  ...
      </configuration>
      <goals>
        <goal>update</goal>
      </goals>
    </execution>
   <execution>
      <phase>process-resources</phase>
      <configuration>
        <changeLogFile>PATH_TO_CHANGELOG_2</changeLogFile>
        ... connection properties  ...
      </configuration>
      <goals>
        <goal>update</goal>
      </goals>
    </execution>
  </executions>
</plugin>

这种方法的唯一问题是您需要两个不同的 changelog.xml文件,每个数据库一个。

此外,您还可以拥有 preconditions在您的变更日志文件中选择每个数据库将处理的变更集。

例如:
<changeSet id="1" author="bob">
    <preConditions onFail="MARK_RAN">
         <dbms type="oracle" />
    </preConditions>
    <comment>Comments should go after preCondition. If they are before then liquibase usually gives error.</comment>
    <dropTable tableName="oldtable"/>
</changeSet>
onFail="MARK_RAN"使 Liquibase 跳过变更集但将其标记为运行,因此下次它不会再试一次。见 customPrecondition documentation 中的标签对于更复杂的前提条件。

关于maven - 基于多个数据库的 Liquibase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364023/

相关文章:

java - android studio 构建失败,因为 "Cannot cast object ' 1 1' with class ' java.lang.Integer' to class "

java - 如何部署/检索模块化 Maven 项目的模块版本信息?

java - 如何使用 liquibase 将数据库回滚到 Spring Boot 中的特定变更集 ID?

oracle - 如何使用 Liquibase 更改 Oracle 和 HSQL DB 上的 View (HSQLDB 不支持 ReplaceIfExists)

maven - Antlr4 maven插件中指定包的格式是什么?

java - 我在下面的代码中收到 org.junit.platform.commons.PreconditionViolationException

where-clause - 如何在 LiquiBase 变更集中构建 WHERE 子句

mysql - MYSQL 的 Liquibase 脚本

java - JAR 文件中的 Liquibase 变更集

java - 我可以在 Maven 插件中使用已编译的类吗?