使用Ant替换zip中的文件,而不考虑时间戳

使用Ant替换zip中的文件,而不考虑时间戳,ant,Ant,我想使用zip任务(或任何其他可以这样做的ANT任务)替换一个大型归档中的1-2个文件。我知道传递update=true参数可以做到这一点,但只有在新文件的时间戳比旧文件的时间戳更大的情况下才能做到。我希望确保该文件被替换,即使它与现有存档中的文件相比具有旧的时间戳 我看过几篇帖子,他们建议解压替换重新压缩之类的东西。但是,如果可能的话,我想避免这种情况,因为我的归档文件很大(以GBs为单位)。是否有其他对性能影响最小的方法 我发现的另一种方法是使用zipfileset任务,如下所示: <

我想使用zip任务(或任何其他可以这样做的ANT任务)替换一个大型归档中的1-2个文件。我知道传递
update=true
参数可以做到这一点,但只有在新文件的时间戳比旧文件的时间戳更大的情况下才能做到。我希望确保该文件被替换,即使它与现有存档中的文件相比具有旧的时间戳

我看过几篇帖子,他们建议解压替换重新压缩之类的东西。但是,如果可能的话,我想避免这种情况,因为我的归档文件很大(以GBs为单位)。是否有其他对性能影响最小的方法

我发现的另一种方法是使用
zipfileset
任务,如下所示:

<zip destfile="tmp.jar"> 
      <zipfileset src="src.jar"> 
           <exclude name="abc.class" />  
      </zipfileset> 
      <zipfileset dir="${basedir}/myclasses" includes="abc.class" />
</zip> 
<move file="tmp.jar" tofile="src.jar" />


对于整个存档,此任务是否与解压缩删除添加重新压缩相同?还是在时间方面效率更高?

您检查过了吗。它谈论战争,但对你应该有用。是的,我看过。但是,在我的情况下,用当前时间戳触摸现有文件并不总是可靠的,因为我的归档文件可能包含一些未来日期的文件(我知道这很奇怪,但在打包归档文件时,我们通常使用+24小时偏移量来确保文件在多个时区内被替换。这是我们产品中的遗留代码。我们可以尽可能地删除它,但归档文件中仍有可能存在未来日期的文件。