在liquibase中使用配置文件



我正在使用Liquibase,并希望在两种不同的变体(生产和测试)中执行相同的脚本:

<changeSet author="..." id="...">   
    <insert tableName="...">
            <column name="ACTIVE" value="${isActive}" />
    </insert>
</changeset>

目前,我使用一个属性在两个文件中进行引导:

<!--File1: For production --> 
<property name="isActive" value="true"/>
<!--File2: For tests--> 
<property name="isActive" value="false"/>

有没有一种方法可以在Liquibase中使用类似概要文件的东西(如Maven中)或使用命令行参数?我希望避免处理两个不同的文件,一个用于生产,另一个用于测试系统。

您可以为属性或changeSet本身指定context参数:

<property name="isActive" value="true" context="prod"/>
<property name="isActive" value="false" context="test"/>

然后以某种方式将上下文参数传递给liquibase:

mvn liquibase:migrate -Dliquibase.contexts=prod

我知道这篇文章很旧,但我发现了一种直接使用maven概要文件的更干净的方法。(由于您要求使用maven配置文件)。您可以使用liquibase.properties文件;参数";属性,以便从您的变更日志中访问变量。假设您使用maven配置文件";prod";,然后将以下内容包含到liquibase-prod.properties中:

parameter.isActive=true

现在你可以简单地调用:

mvn -Pprod liquibase:update

然后它会自动替换您放入变更日志的${isActive}变量:

<property name="isActive" value="${isActive}"></property>

如果使用cmd或终端,则使用:

--contexts=prod

对我来说,pom.xml中的配置文件设置很鼓舞人心:

<profiles>
    <profile>
        <id>db-diff</id>
        <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  ...some profile db-diff settings like url, username password...
  </profile>
  <profile>
      <id>db-update</id>
      <build>
          <plugins>
              <plugin>
                  <groupId>org.liquibase</groupId>
                  <artifactId>liquibase-maven-plugin</artifactId>
                  ...some profile db-update settings like url, username, password...
  </profile>

例如使用概要文件数据库更新进行更新:

mvn liquibase:update -Pdb-update

相关内容

  • 没有找到相关文章

最新更新