我正在使用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"/>
有没有办法使用类似配置文件(如在Maven中)或在Liquibase中使用命令行参数?我想避免处理两个不同的文件,一个用于生产,一个用于测试系统。
答案 0 :(得分:5)
您可以为property或changeSet本身指定context
参数:
<property name="isActive" value="true" context="prod"/>
<property name="isActive" value="false" context="test"/>
然后以某种方式将context参数传递给liquibase:
mvn liquibase:migrate -Dliquibase.contexts=prod
答案 1 :(得分:0)
如果您使用cmd或终端,请使用:
--contexts=prod