Задача Ant Filterset не повторяется - PullRequest
0 голосов
/ 03 февраля 2011

Использование Apache Ant 1.7.1

Похоже, задача Ant Filter не может разрешить одно и то же свойство несколько раз в одной строке, если для recurse установлено значение true.Я не могу найти упоминаний об этом в документации по муравьям.Это должно произойти?

Используя этот файл сборки муравья:

<project basedir="." default="assemble" >
  <macrodef name="copy-and-filter">
    <sequential>
      <copy tofile="to.txt" file="from.txt" overwrite="true">
        <filterset recurse="true">
          <filtersfile file="filters.properties"/>
        </filterset>
      </copy>
    </sequential>
  </macrodef>

  <target name="assemble">
    <copy-and-filter />
  </target>
</project>

с этими файлами:

from.txt:

I want my broker to be: @broker.url@
and my client to be: @client.url@

filters.properties:

myval=fish
broker.url=-@myval@-
client.url=@myval@-@myval@

Я получаю вывод:

i want my broker to be: -fish-
and my client to be: myval

, а не то, что я ожидал, что будет следующим:

i want my broker to be: -fish-
and my client to be: fish-fish

Если яустановите recurse в false, тогда я получу «правильное» поведение.

i want my broker to be: -@myval@-
and my client to be: @myval@-@myval@

Почему это так?

1 Ответ

0 голосов
/ 03 февраля 2011

Флаг рекурсии предназначен для поиска большего числа токенов после первоначальной замены, но он не будет работать, если тот же токен будет использован снова.Проблема в том, что установка recurse = true вызывает бесконечный цикл.Смотрите вывод Ant:

Infinite loop in tokens. Currently known token tokens: [client.url, myval]
Problem token: @myval@ called from @myval@

Я не думаю, что возможно сделать то, что вы хотите, чтобы быть в состоянии сделать, используя задачу filterset.Для чего вы используете файл to.txt?Это предоставить файл конфигурации системы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...