0

我在 ant 宏定义中使用 concat 目标来生成 ddl 文件。一些属性字符串中的一部分字符串在生成的 ddl 中重复。

只有在从 concat 目标生成时才会观察到这种重复。

我试过 1) 使用破折号而不是下划线,2) 使用 ${property-name} 而不是 @{property-name},3) 使用 echo 目标而不是 concat 目标,4) 从 ant 1.9.3 切换到 1.10 .5 和 5) 进行在线搜索

在 ant 脚本中设置属性 <property name="SCHEMA_ID" value="REPLACE_SCHEMA_ID" />

在 macrodef 中设置的属性 <attribute name="schema-id" default="${SCHEMA_ID}" />

连接目标

<concat destfile="@{dest-dir}/@{spname}.ddl">
SET CURRENT SCHEMA = '@{schema-id}'
@@@@
SET CURRENT SQLID = '@{sql-id}'
@@@@
</concat>

ddl 文件中的输出行 SET CURRENT SCHEMA = 'REPLACE_REPLACE_SCHEMA_ID'

我希望 ddl 文件中的输出行是: SET CURRENT SCHEMA = 'REPLACE_SCHEMA_ID'

4

1 回答 1

0

据我所知,在使用 echo 或 concat(至少在宏定义中)时存在一个错误,如果属性的名称等于属性值的一部分,则与名称不匹配的值部分是重复。

<property name="SCHEMA_ID" value="REPLACE_SCHEMA_ID" /> becomes REPLACE_REPLACE_SCHEMA_ID
<property name="SCHEMA_ID" value="@SCHEMA_ID@" /> becomes @@SCHEMA_ID@@

<property name="SCHEMA_ID" value="@schema_id@" /> becomes @schema_id@

奇怪的行为,我愿意被证明是错误的,但这就是我想出的。

于 2019-04-02T13:34:37.147 回答