0

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

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

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

这样做最有效的方法是什么?

4

2 回答 2

0

您应该能够使用modifiedant 任务

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'到复制方法中也应该显示它在做什么...

于 2012-04-26T10:38:46.557 回答
0

对于像我这样在这里寻找解决方案的人来说,使用AntBuilder 同步任务似乎是最好的方法:

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) {
        }
    }
}
于 2019-07-26T08:22:02.857 回答