在 liquibase 中使用配置文件
Using profiles in 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"/>
有没有办法使用配置文件之类的东西(如在 Maven 中)或在 Liquibase 中使用命令行参数?我想避免处理两个不同的文件,一个用于生产系统,一个用于测试系统。
您可以为 属性 或 changeSet 本身指定 context
参数:
<property name="isActive" value="true" context="prod"/>
<property name="isActive" value="false" context="test"/>
然后通过某种方式将上下文参数传递给liquibase:
mvn liquibase:migrate -Dliquibase.contexts=prod
如果您使用 cmd 或终端,请使用:
--contexts=prod
我知道 post 很旧,但我发现了一种直接使用 Maven 配置文件的更简洁的方法。
(因为您要求使用 Maven 配置文件)。
您可以使用 liquibase.properties 文件并使用 liquibase 的“参数”属性来访问更改日志中的变量。
假设您使用 Maven 配置文件“prod”,那么您将以下内容添加到 liquibase-prod.properties:
parameter.isActive=true
现在您只需调用:
mvn -Pprod liquibase:update
然后它将自动替换您放入更改日志中的 ${isActive} 变量:
<property name="isActive" value="${isActive}"></property>
我正在使用 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 中使用命令行参数?我想避免处理两个不同的文件,一个用于生产系统,一个用于测试系统。
您可以为 属性 或 changeSet 本身指定 context
参数:
<property name="isActive" value="true" context="prod"/>
<property name="isActive" value="false" context="test"/>
然后通过某种方式将上下文参数传递给liquibase:
mvn liquibase:migrate -Dliquibase.contexts=prod
如果您使用 cmd 或终端,请使用:
--contexts=prod
我知道 post 很旧,但我发现了一种直接使用 Maven 配置文件的更简洁的方法。 (因为您要求使用 Maven 配置文件)。 您可以使用 liquibase.properties 文件并使用 liquibase 的“参数”属性来访问更改日志中的变量。 假设您使用 Maven 配置文件“prod”,那么您将以下内容添加到 liquibase-prod.properties:
parameter.isActive=true
现在您只需调用:
mvn -Pprod liquibase:update
然后它将自动替换您放入更改日志中的 ${isActive} 变量:
<property name="isActive" value="${isActive}"></property>