我正在编写一个Groovy脚本,用于将文件从一个目录复制到另一个目录。目前,我正在使用:
new AntBuilder().copy( todir:'/dest/' ) {
fileset( dir:'src' )
为了加快这个过程,我希望这个脚本足够聪明,能够识别那些没有改变的文件,也不会复制那些文件。
最有效的方法是什么?
答案 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) {
}
}
}