2016-04-26 117 views
2

我试图在处理它之前检查文件是否为空,所有这些都来自我的ANT任务。ANT:检查文件是否为空

基本上我有以下的目标正由另一主要目标调用,我还有其他的目标,这一个称为后,我想运行无论发生什么事,以这一个:

<target name="mytarget"> 
<!-- Copy a file --> 
     <get verbose="true" ignoreerrors="no" 
      src="..." 
      dest="bla.txt" /> 
     <property name="file.bla" value="bla.txt" /> 

<!-- Check if the file is empty --> 
     <script language="javascript"> <![CDATA[ 
     importClass(java.io.File); 
     file = project.getProperty("file.bla"); 
     var filedesc = new File(file); 
     var size = filedesc.size; 
     if (size==0){ 
      //? Exit the target cleanly 
     } 
     ]]> </script> 
<!-- If the file is not empty, process it with ANT. --> 
<!-- ... -> 
</target> 
  • 什么是最简单的如何在没有ANT Contrib的情况下检查文件大小?
  • 如何退出当前目标而不破坏 执行的其余部分?
+0

看看http://stackoverflow.com/questions/312652/how-to-use-size-of-file-inside-ant-target – redoc

+0

谢谢,非常有用,我之前没有找到它: ) – Flag

回答

2

所以我设法做我想做的,这里是检查文件大小和根据大小运行其他东西的基本示例。

创建一个只运行你的病情

<target name="check.log.file"> 
    <get src="bla/problems.txt" dest="${temp.dir}\bla.txt" /> 
    <property name="file" value="${temp.dir}\bla.txt" /> 
    <condition property="file.is.empty"> 
    <length file="${file}" when="equal" length="0" /> 
    </condition> 
    <antcall target="target.to.process.the.log.file"/> 
</target> 

编辑处理目标

而现在的目标,其他目标,这就要看你的条件之一只需添加:

<target name="target.to.process.the.log.file" unless="file.is.empty"> 
<!-- whatever you do --> 
</target> 

这就是所有人。

+1

您的解决方案有效。如果你想避开'',另一个选择是增加'depend'属性,例如:''。 ''的行为有时会令人惊讶,所以使用'depends'可能会更简单。 –

+0

很高兴知道,谢谢! – Flag