【发布时间】:2019-04-30 01:52:23
【问题描述】:
我知道 Ant 可以从两个目录中删除具有匹配文件名的文件。 [1]。
但是,我希望测试文件是否相同 - 如果它们是字节相同的副本(或者 也许 相同的大小就足够了),我只想删除它们。
创建我自己的 Ant 任务是这样做的唯一方法吗?
背景:我定期分发压缩包的数据文件。为了节省带宽,我希望切换到仅分发数据文件的增量。为此,我需要知道哪些文件自上一版本以来没有更改 - 仅识别新文件是不够的。
【问题讨论】:
我知道 Ant 可以从两个目录中删除具有匹配文件名的文件。 [1]。
但是,我希望测试文件是否相同 - 如果它们是字节相同的副本(或者 也许 相同的大小就足够了),我只想删除它们。
创建我自己的 Ant 任务是这样做的唯一方法吗?
背景:我定期分发压缩包的数据文件。为了节省带宽,我希望切换到仅分发数据文件的增量。为此,我需要知道哪些文件自上一版本以来没有更改 - 仅识别新文件是不够的。
【问题讨论】:
Ant 有一个different 选择器,可以应用于资源集合。它可以通过修改时间、内容或两者来选择文件。
这是一个演示其工作原理的示例目标。
<target name="copy-different">
<delete dir="src_dir" />
<delete dir="dest_dir" />
<mkdir dir="src_dir" />
<mkdir dir="dest_dir" />
<touch file="src_dir/file1" />
<touch file="src_dir/file2" />
<echo file="src_dir/file1" message="identical" />
<echo file="src_dir/file2" message="different" />
<touch file="dest_dir/file1" />
<touch file="dest_dir/file2" />
<echo file="dest_dir/file1" message="identical" />
<echo file="dest_dir/file2" message="identical" />
<copy todir="different" overwrite="true">
<fileset dir="src_dir">
<different targetdir="dest_dir" ignoreFileTimes="true" />
</fileset>
</copy>
</target>
只有file2 会被复制到dest_dir。
【讨论】: