2016-04-26 168 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