我的目标是创建一个满足以下要求的gradle任务:
最初的想法是使用这样的任务:
p.task("unzip", type: Copy) {
def zipFile = p.file('some-zip-file.zip')
def outputDir = p.file("$p.buildDir/unpacked")
from p.zipTree(zipFile)
into outputDir
}
如果我创建了一个文件" test.txt"在$ p.buildDir / unpacked中,我重新运行解压缩任务,文件" test.txt"保留在解压缩的目录中。解压缩任务有效地执行类似于" merge"的操作。不幸的是,这不是最佳的,因为/ unpacked的内容应该被定义为解压缩的zip文件。
遗憾的是,以下解决方案未检测到输出目录"已解压缩"自上次执行任务以来已发生变化:
p.task("deleteUnzippedDirectory", type: Delete) {
delete "$p.buildDir/unpacked"
inputs.file p.file('some-zip-file.zip')
outputs.dir p.file("$p.buildDir/unpacked")
}
p.task("unzip", type: Copy) {
def zipFile = p.file('some-zip-file.zip')
def outputDir = p.file("$p.buildDir/unpacked")
from p.zipTree(zipFile)
into outputDir
dependsOn p.deleteUnzippedDirectory
}
除了运行" deleteUnzippedDirectory"还有办法达到预期的效果吗?每次? (outputs.upToDateWhen {false})