在liquibase中使用配置文件

use*_*077 3 parameter-passing liquibase

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

<changeSet author="..." id="...">   
    <insert tableName="...">
            <column name="ACTIVE" value="${isActive}" />
    </insert>
</changeset>
Run Code Online (Sandbox Code Playgroud)

目前,我使用一个属性来控制它在两个文件中:

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

<!--File2: For tests--> 
<property name="isActive" value="false"/>
Run Code Online (Sandbox Code Playgroud)

有没有办法使用类似配置文件(如在Maven中)或在Liquibase中使用命令行参数?我想避免处理两个不同的文件,一个用于生产,一个用于测试系统.

dfc*_*che 5

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

<property name="isActive" value="true" context="prod"/>
<property name="isActive" value="false" context="test"/>
Run Code Online (Sandbox Code Playgroud)

然后以某种方式将context参数传递给liquibase:

mvn liquibase:migrate -Dliquibase.contexts=prod
Run Code Online (Sandbox Code Playgroud)