2013-11-21 96 views
0

我有以下Ant腳本將文件複製到DIR A如果該文件是不同的:螞蟻檢查拷貝文件成功

<copy todir="<DIR A>" verbose="true" preservelastmodified="true"> 
    <fileset file="< file A"> 
     <different targetdir="<DIR A>" ignorefiletimes="true"/> 
    </fileset> 
</copy> 

我需要做到的是,以「檢查」如果複製的發生爲了做「別的東西」。

+0

如果複製某種原因失敗,也不會生成其餘終將以失敗告終?爲什麼測試內置的已知功能? – David

+0

我說「發生」不是「失敗」。複製可能不會發生,因爲比較不滿意。所以沒有文件A被複制到DIR A. – janagn

回答

1

在複製之前運行測試以查看文件是否不同。然後在複製後運行測試以查看文件是否相同。

<condition>任務<filesmatch> condition檢測兩個文件是否具有相同的內容。

下面是一些代碼:

<project name="ant-copy-changed-file-test" default="run"> 

    <target name="run" depends="-copy,-post-copy"/> 

    <target name="-copy"> 
     <condition property="copy-should-happen"> 
      <not> 
       <filesmatch file1="${file_A}" file2="${dir_A}/file_A"/> 
      </not> 
     </condition> 

     <copy todir="${dir_A}" verbose="true" preservelastmodified="true"> 
      <fileset file="${file_A}"> 
       <different targetdir="${dir_A}" ignorefiletimes="true"/> 
      </fileset> 
     </copy> 

     <condition property="copy-happened"> 
      <and> 
       <isset property="copy-should-happen"/> 
       <filesmatch file1="${file_A}" file2="${dir_A}/file_A"/> 
      </and> 
     </condition> 
    </target> 

    <target name="-post-copy" if="copy-happened"> 
     <echo>Copy happened!</echo> 
    </target> 
</project> 
+0

完美...謝謝:) – janagn