我想使用filterset来写出替换设置为ant属性的变量的文件。如果我有一个嵌套的filterset,我可以传递属性,但不是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
属性。
答案 0 :(得分:4)
问题似乎是在顶级过滤器内:
<filterset id="test-filters" begintoken="@" endtoken="@">
<filter token="foo" value="${bar}" />
</filterset>
属性bar
未定义。移动目标bar
之外的filterset-test3
的属性定义应该有效:
<?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>