2014-09-04 31 views
0
<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。如果此语句存在于文件中,则上述代码按预期工作。如果updated.txt中的正则表达式“ui/dev”不匹配,理想情况下,UI文件的值应该为空,并且不应该向Filelist.txt写入任何内容。但在我的情况下,“$ {UIfiles}”正在被附加到Filelist.txt中。请建议如何避免这种情况。谢谢。如何解决这个ANT问题?

回答

0

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

你需要一些如果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> 
+0

如何appendfilelist目标被调用?我的一组陈述已经在目标“checkoutspec”中。 – NaveenBharadwaj 2014-09-04 11:10:55

+0

通常蚂蚁脚本中的工作流程是通过依赖关系链建立的,意味着几个目标对其他目标具有依赖关系。就我个人而言,我经常使用一些主目标,如来建立一个依赖链,并将该主目标用作我的ant脚本f.e中的默认目标。 Rebse 2014-09-04 11:30:24