无法从Liquibase maven插件为两个数据库执行两个更改日志

时间:2015-09-30 15:08:57

标签: maven liquibase

我目前有两个不同的数据库:Oracle和DB2。我正在尝试使用liquibase的maven插件在这两个数据库上运行两个不同的更改日志。

到目前为止我所拥有的:

在我的配置中,我设置了Oracle和DB2连接:

<configuration>
     <changeLogFile>src/main/resources/liquibase/changelogORACLE.xml</changeLogFile>
     <driver>oracle.jdbc.OracleDriver</driver>
     <url>jdbc:oracle:thin:@vdfdfseisfs3:3131:orcl</url>
     <username>liquibase</username>
     <password>password</password>

     <changeLogFile>src/main/resources/liquibase/changelogDB2.xml</changeLogFile>
     <driver>com.ibm.db2.jcc.DB2Driver</driver>
     <url>jdbc:db2://111.111.1.11:10000/test</url>
     <username>Admini</username>
     <password>password</password>
</configuration>

在我的执行中,我设置了这样:

<execution>
    <phase>process-resources</phase>
    <goals>
        <goal>update</goal>
    </goals>
</execution>

我有两个依赖设置:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0</version>
</dependency>

<dependency>
    <artifactId>com.ibm.db2.jcc</artifactId>
    <groupId>db2jcc</groupId>
    <version>4.9.78</version>
    <scope>system</scope>
    <systemPath>${basedir}/my-repo/com/ibm/db2/jcc/db2jcc/4.9.78/db2jcc-4.9.78.jar</systemPath>
</dependency>

我的问题是,当我从这样的CMD窗口运行时:mvn liquibase:update

只会执行DB2更新日志,因此我将为DB2数据库创建数据,而不是Oracle。为什么只有一个changelog文件被执行?

我可以单独执行Oracle和DB2更改日志,但我想同时执行它们。

1 个答案:

答案 0 :(得分:0)

Liquibase maven插件很可能不允许在你的pom的这一部分中使用两种配置:

<configuration>
     <changeLogFile>src/main/resources/liquibase/changelogORACLE.xml</changeLogFile>
     <driver>oracle.jdbc.OracleDriver</driver>
     <url>jdbc:oracle:thin:@vdfdfseisfs3:3131:orcl</url>
     <username>liquibase</username>
     <password>password</password>

     <changeLogFile>src/main/resources/liquibase/changelogDB2.xml</changeLogFile>
     <driver>com.ibm.db2.jcc.DB2Driver</driver>
     <url>jdbc:db2://111.111.1.11:10000/test</url>
     <username>Admini</username>
     <password>password</password>
</configuration>

可能只读第一个。通过阅读Maven生命周期文档,您可以通过使用两种不同的执行来执行您想要的操作,但我不清楚如何更改pom以使两次执行使用两种不同的配置。