Ant - 宏定义中连接目标中的字符串重复 - 为什么



我在ant macrodef中使用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" />

在宏定义中设置的属性 <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'

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

<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@

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

相关内容

  • 没有找到相关文章

最新更新