Ant filterset任务未递归

Ant filterset任务未递归,ant,Ant,使用ApacheAnt1.7.1 当recurse设置为true时,Ant Filter任务似乎无法在一行中多次解析同一属性。我在Ant文档中找不到这方面的任何提及。这应该发生吗 使用此ant生成文件: <project basedir="." default="assemble" > <macrodef name="copy-and-filter"> <sequential> <copy tofile="to.txt" file

使用ApacheAnt1.7.1

当recurse设置为true时,Ant Filter任务似乎无法在一行中多次解析同一属性。我在Ant文档中找不到这方面的任何提及。这应该发生吗

使用此ant生成文件:

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

这是为什么?

递归标志用于在初始替换发生后查找更多的令牌,但如果再次使用相同的令牌,它将不起作用。问题是设置recurse=true会导致无限循环。请参见Ant的输出:

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

我认为使用filterset任务不可能完成您想要完成的任务。您使用to.txt文件的目的是什么?是否提供系统配置文件?

是此错误被我的IDE隐藏。我必须重新考虑我在这里做的事情。代码以您想要的方式为Ant的更高版本工作。这其中有一个蚁虫:它似乎在1.8.0和1.81中得到了修复。
Infinite loop in tokens. Currently known token tokens: [client.url, myval]
Problem token: @myval@ called from @myval@