同步任务的覆盖属性复制相同的文件



我遇到了Ant的Sync任务的一个问题,其中文件被不必要地复制。目标是用${source}目录的内容更新${destination}目录中的所有内容,即使${destination}中的文件较新。根据Ant的文档,我添加了一个overwrite属性来确保覆盖${destination}

<target name="test">
    <sync todir="${destination}" overwrite="true" granularity="5000">
        <fileset dir="${source}">
        </fileset>
    </sync>
</target>

此任务正确地覆盖${destination},但始终复制该文件,即使源和目标相同。这会导致大量不必要的流量。

根据文档,我尝试配置granularity属性,但这似乎没有任何效果。我还在同一台机器上的两个目录之间运行这个测试,所以我不期望时间戳的差异(当然不超过5秒)。

关于Sync任务和overwrite属性为什么以这种方式起作用,有什么想法吗?是否有使用默认Ant任务集来防止不必要的文件复制的解决方案?

如果您使用overwrite="true"的同步任务,您将得到此行为。

你可以用overwrite="false"来使用它,然后使用一个拷贝任务,只复制存在但不同的文件,使用不同的选择器,例如:

<copy  todir="${destination}">
    <fileset dir="${source}">
        <different targetdir="${destination}" ignoreFileTimes="true"/>
    </fileset>
</copy>

相关内容

  • 没有找到相关文章