<loadfile property="UIfiles" srcfile="updated.txt">
<filterchain>
<linecontainsregexp>
<regexp pattern="ui/dev/"/>
</linecontainsregexp>
</filterchain>
</loadfile>
<echo file="Filelist.txt" append="true">${UIfiles}</echo>
我在build.xml文件中有上面的代码。 updated.txt将包含一些文本,如Projects / accounts / spec / ui / dev / dpdl / abc.xml。如果该语句存在于该文件中,则上述代码按预期工作。如果正则表达不匹配&#34; ui / dev&#34;在updated.txt中,理想情况下UIfiles的值应为空,不应向Filelist.txt写入任何内容。但在我的情况下&#34; $ {UIfiles}&#34;将被附加到Filelist.txt中。请建议如何避免这种情况。谢谢。
答案 0 :(得分:0)
按预期工作。 $ {...}是未设置时属性的语法,因为 您的文件不包含与正则表达式匹配的行。
你需要一些if isset条件,Ant 1.9.3和new if unless feature:
<project
xmlns:if="ant:if"
xmlns:unless="ant:unless"
>
<loadfile property="UIfiles" srcfile="updated.txt">
<filterchain>
<linecontainsregexp>
<regexp pattern="ui/dev/"/>
</linecontainsregexp>
</filterchain>
</loadfile>
<echo file="Filelist.txt" append="true">${UIfiles} if:set="UIfiles"</echo>
</project>
否则对于较旧的Ant版本使用:
<project>
<target name="checkfile">
<loadfile property="UIfiles" srcfile="updated.txt">
<filterchain>
<linecontainsregexp>
<regexp pattern="ui/dev/"/>
</linecontainsregexp>
</filterchain>
</loadfile>
</target>
<target name="appendfilelist" depends="checkfile" if="UIfiles">
<echo file="Filelist.txt" append="true">${UIfiles}</echo>
</target>
<project>