我正在编写一个将文件从一个目录复制到另一个目录的 Groovy 脚本。目前,我正在使用:
new AntBuilder().copy( todir:'/dest/' ) {
fileset( dir:'src' )
为了加快这个过程,我希望脚本足够聪明,能够识别没有更改的文件并且不复制这些文件。
这样做最有效的方法是什么?
您应该能够使用modified
ant 任务:
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'
到复制方法中也应该显示它在做什么...
对于像我这样在这里寻找解决方案的人来说,使用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) {
}
}
}