1

是否有可能逃脱 Liquibase Changelog 属性替换

这是我的变更集:

<changeSet author="me" id="changeSetOne">
    <sql>
        INSERT INTO TABLE_NAME (VALUE, DESCRIPTION) VALUES (
            '${ENVIRONMENT_VARIABLE}/some/path/',
            'describe nothing');
    </sql>
</changeSet>

结果,带有(ENVIRONMENT_VARIABLE = "C:/foo"):

+-----------------+----------------+
|VALUE            |DESCRIPTION     |
+-----------------+----------------+
|C:/foo/some/path/|describe nothing|
+-----------------+----------------+

但我不想用 Liquibase 替换这个占位符,所以我的结果应该是这样的:

+----------------------------------+----------------+
|VALUE                             |DESCRIPTION     |
+----------------------------------+----------------+
|${ENVIRONMENT_VARIABLE}/some/path/|describe nothing|
+----------------------------------+----------------+

这甚至可能吗?

4

1 回答 1

0

您寻求的是一种黑客或一种逃避方式(例如:\${ENVIRONMENT_VARIABLE}$${ENVIRONMENT_VARIABLE})。

我不知道这个特定问题是否与此有关:https ://github.com/liquibase/liquibase/issues/1023但在有人修复它之前,您将不得不使用这个很棒的 hack™:

<property name="dollar" value="$" />

<update tableName="THE_TABLE">
  <column name="THE_COLUMN" value="${dollar}{ENVIRONMENT_VARIABLE}" />
</update>

然后,当 liquibase 看到 时${dollar}{ENVIRONMENT_VARIABLE},应该将其替换为${ENVIRONMENT_VARIABLE}.

于 2021-04-16T14:45:13.433 回答