Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ant filterset属性范围_Ant - Fatal编程技术网

ant filterset属性范围

ant filterset属性范围,ant,Ant,我想用filterset来写一个文件,替换一个被设置为ant属性的变量。如果我有嵌套过滤器集,但没有refid,我可以传递属性;我正在重复使用过滤器集,所以我想使用refid foo.old只包含foo=@foo@ 这项工作: <target name="filterset-test1"> <property name="bar" value="here is foo" /> <copy file="foo.old" tofile="foo.new1"> <

我想用filterset来写一个文件,替换一个被设置为ant属性的变量。如果我有嵌套过滤器集,但没有refid,我可以传递属性;我正在重复使用过滤器集,所以我想使用refid

foo.old只包含
foo=@foo@

这项工作:

<target name="filterset-test1"> <property name="bar" value="here is foo" /> <copy file="foo.old" tofile="foo.new1"> <filterset begintoken="@" endtoken="@"> <filter token="foo" value="${bar}" /> </filterset> </copy> </target> 这无法替换令牌:

<filterset id="test-filters" begintoken="@" endtoken="@"> <filter token="foo" value="${bar}" /> </filterset> <target name="filterset-test3"> <property name="bar" value="property doesn't pass thru" /> <copy file="foo.old" tofile="foo.new3"> <filterset refid="test-filters" /> </copy> </target>
有没有办法做到后者?我还尝试编写一个属性文件,并将其用作
filtersfile
属性。

问题似乎在于顶级filterset内部:

<filterset id="test-filters" begintoken="@" endtoken="@">
  <filter token="foo" value="${bar}" />
</filterset>

谢谢你,克莱斯特。我需要做的是设置filterset-test3内部的信息,或者甚至设置filterset-test3所依赖的不同目标。这是可能的,还是我需要重新检查我的操作顺序?为了使过滤器逻辑更加模块化,一种方法是将任务包装在宏定义中。然后,您可以像第一个示例一样将任务嵌套在内部,而无需使用
refid
。谢谢
<?xml version="1.0" encoding="UTF-8" ?>
<project name="filter-test">

  <property name="bar" value="property doesn't pass thru" />

  <filterset id="test-filters" begintoken="@" endtoken="@">
    <filter token="foo" value="${bar}" />
  </filterset>

  <target name="filterset-test3">
    <copy file="foo.old" tofile="foo.new3">
      <filterset refid="test-filters" />
    </copy>
  </target>
</project>