2016-04-26 13 views
2

ファイルが処理される前に空であるかどうかを確認しようとしています。そのファイルはすべてANTタスクからのものです。ANT:ファイルが空であることを確認してください

基本的に私は、別のメインターゲットによって呼び出され、次の目標を持っている私は、私はこの1つに起こるものは何でも実行したいこの1の後に呼ばれる他のターゲットがありますが最も簡単です何

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

編集処理対象

そして今を実行し、ターゲットを作成し、他の目的では、あなたの条件に依存して1だけ追加します。

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

それはすべての人々です。

+1

あなたのソリューションは機能します。 ''を避けたい場合は、 'depends'属性を以下のように追加することもできます:' ' ''の振る舞いは時々驚くかもしれないので、 'depends'を使用する方が簡単です。 –

+0

おかげで、ありがとう! – Flag

関連する問題