Liquibase使用一个变量来设置变更集作者



是否可以使用某种变量或属性来设置更改集作者在一个liquibase格式的sql文件

我尝试在chnagelog.xml中设置一个属性,并使用该属性作为作者,如下所示。

changelog.xml

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<property name="author" value="my-author"/>
<include file="sql/test_schema.sql"/>
</databaseChangeLog>

和testrongchemal.sql

--liquibase formatted sql
--changeset ${author}:1
CREATE SCHEMA IF NOT EXISTS test_schema;
--rollback DROP SCHEMA IF EXISTS test_schema;

但是,作者没有被设置为author属性"my-author"

我认为这也可以用地形模板来完成,但是有没有一种方法可以只使用液态基功能来做到这一点?

Liquibase允许动态替换属性在变更日志文件中。我们可以在一个文件中配置多个属性,然后在需要的地方使用它们。在你的例子中,我们只需要配置property "authorName",然后使用${authorName}语法在变更日志文件中使用。

无论乔治在他的回答中提到什么都是正确的。Liquibase按以下顺序分配配置属性的值或优先级:

  1. 作为传递给您的液基运行器的属性。
  2. 作为JVM系统属性
  3. 作为环境变量
  4. 如果通过命令行
  5. 运行liquidbase,则作为CLI属性。liquibase
  6. 。属性文件
  7. 在parameters块(DATABASECHANGELOG表的属性元素)

您可以按照下面的示例代码片段做:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet author="${authorName}" id="some-unique-id" dbms="${dbType}" context="some-context">
**My SQL query/ transactional logic goes here**
</changeSet>

</databaseChangeLog>

liquibase。我将按如下方式配置这些属性:

authorName=Rakhi
dbType=PostgreSQL

注意:上面的例子使用了两个属性(authorName和dbType)。您可以只使用authorName,甚至更多。

如果您需要帮助创建" liquibbase .properties"文件,访问此链接

干杯!

在更改日志中使用属性替换

Liquibase允许您使用不同的方法来设置属性值。Liquibase按以下顺序分配这些值:

作为传递给Liquibase运行器的属性。

  1. 作为JVM系统属性。
  2. 作为环境变量。
  3. 作为CLI属性,如果从命令行执行
  4. 作为CLI属性,如果从命令行执行
  5. command_line参数如果从命令行执行
  6. 在DATABASECHANGELOG文件本身的参数块(属性元素)中

查看此液基文档

最新更新