有没有办法在使用 Liquibase 运行时将属性替换作为参数传递?请分享一个例子?



我希望我的构建脚本使用环境变量进行设置,该变量为以下 changeSet 设置架构名称:

<createTable tableName="actor" schemaName="mySchema">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>

我从构建脚本中的命令行启动 Liquibase。

为了传递因环境而异的参数,Liquibase 使用属性替换。 这需要对现有流程进行 2 次更改。

第一种是用变量替换文字值:

我希望使用环境变量设置我的构建脚本,该变量为以下更改集设置架构名称(我们将在下面使用 SCHEMA 的属性名称(:

<createTable tableName="actor" schemaName="${SCHEMA}">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>

然后我们可以在命令行创建期间为 SCHEMA 传递一个值,为了证明将替换哪个值,我使用了(注意查找是我要替换的模式的名称(:

liquibase --changeLogFile=“sample.xml” updateSQL -DSCHEMA=lookup

下面是输出的一个片段,它将显示架构已替换为查找值:

....
CREATE TABLE lookup.actor (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, firstname VARCHAR(255), lastname VARCHAR(255), twitter VARCHAR(15), CONSTRAINT actor_pkey PRIMARY KEY (id));
...

如果看起来没问题,您实际上可以通过以下方式运行变更集:

liquibase --changeLogFile=“sample.xml” update -DSCHEMA=lookup

最新更新