我想将我的驱动器上的文件夹与包含我想要保留的名为“logs”的文件夹的另一个文件夹同步。困惑?这是一个图表:
C:\
|-- mydir/ # sync this folder
| `-- someotherfiles.txt
`-- anotherDir/ # into this folder
|-- logs/ # but if this exists, leave it there
`-- someotherfiles.txt
这可以使用同步任务吗?我似乎无法正确配置它,我的最新尝试可能会暗示你到我的场景,所以这里(不工作):
task syncDevDeployFolder(type: Sync, group: 'dev') {
from currentDeliverablesDir
destinationDir = file(project.properties['dev.deployment.dir'])
into (project.properties['dev.deployment.dir']) {
exclude "logs"
}
}
答案 0 :(得分:2)
在撰写本文时,Gradle的当前版本为3.3,从版本3.1开始,有一个名为“preserve”的孵化功能可用于实现您的目标:
请参阅documentation:
中的示例// You can preserve output that already exists in the
// destination directory. Files matching the preserve
// filter will not be deleted.
task sync(type: Sync) {
from 'source'
into 'dest'
preserve {
include 'extraDir/**'
include 'dir1/**'
exclude 'dir1/extra.txt'
}
}
因此,在您的情况下,您可以这样指定:
preserve {
include 'logs/**'
}
答案 1 :(得分:1)
这可以使用同步任务吗?
不,Sync
任务目前不支持此功能。
答案 2 :(得分:1)
您可以回退到ant的同步任务。无论如何,ant
对象都可用于所有gradle构建脚本
task antSync << {
ant.sync(todir:"dest/"){
ant.fileset(dir: "source/")
ant.preserveintarget(includes: "logs/")
}
}