快速查看Groovy中文件是否已更改的过程

时间:2012-04-26 10:33:03

标签: groovy directory

我正在编写一个Groovy脚本,用于将文件从一个目录复制到另一个目录。目前,我正在使用:

new AntBuilder().copy( todir:'/dest/' ) {
  fileset( dir:'src' )

为了加快这个过程,我希望这个脚本足够聪明,能够识别那些没有改变的文件,也不会复制那些文件。

最有效的方法是什么?

2 个答案:

答案 0 :(得分:0)

您应该只能使用modified ant task

new AntBuilder().with {
  copy( todir:'/dest/' ) {
    fileset( dir:'src' ) {
      modified()
    }
  }
}

这可以通过散列文件并将其与目标文件夹中的散列进行比较来实现。

我相信如果你这样做:

new AntBuilder().with {
  copy( todir:'/dest/', preservelastmodified:'true', overwrite:'false' ) {
    fileset( dir:'src' ) 
  }
}

它应该只复制较新的文件...将verbose:'true'添加到复制方法中也应该显示它的内容......

答案 1 :(得分:0)

对于像我这样在此处寻求解决方案的任何人,使用AntBuilder sync task似乎都是最好的方法:

new AntBuilder().sync(todir: targetDir, overwrite: true) {
    fileset(dir: sourceDir) {
    }
}

如果您正在使用jenkins管道,则需要使用@NonCPS注释该方法:

@NonCPS
public void Synchronize() {
    new AntBuilder().sync(todir: targetDir, overwrite: true) {
        fileset(dir: sourceDir) {
        }
    }
}