如何解决这个ANT问题


<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文件中有上面的代码。 update.txt将包含一些文本,如Projects/accounts/spec/ui/dev/dpdl/abc.xml。如果文件中存在此语句,则上述代码按预期工作。如果在update.txt中没有正则表达式"ui/dev"匹配项,理想情况下UIfiles的值应为空,并且不应向Filelist.txt写入任何内容。但就我而言,"${UIfiles}"被附加到文件列表.txt中。请建议如何避免这种情况。谢谢。

按预期工作。 ${...} 是属性在未设置时的语法,因为您的文件不包含与正则表达式匹配的行。

你需要一些 if isset 条件,使用 Ant 1.9.3 和新的 if 除非功能:

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

相关内容

  • 没有找到相关文章