Ant - Строковое дублирование в concat target в macrodef - Почему - PullRequest
0 голосов
/ 01 апреля 2019

Я использую цели concat в ant macrodef для генерации ddl-файлов. Одна часть строки в нескольких строках свойств дублируется в полученном ddl.

Это дублирование наблюдается только при создании из конкатных целей.

Я пробовал 1) использовать тире вместо подчеркивания, 2) использовать $ {property-name} вместо @ {property-name}, 3) использовать echo target вместо concat target, 4) переключиться с муравья 1.9. С 3 по 1.10.5 и 5) поиск в Интернете

Свойство устанавливается в скрипте муравья <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'

1 Ответ

0 голосов
/ 02 апреля 2019

Насколько я могу судить, существует ошибка при использовании 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@

Странное поведение, и я открыт для того, чтобы оказаться неправым, но это то, что я придумал.

...