解压缩文件的智能最新检查

时间:2015-12-01 09:12:09

标签: gradle unzip build-system

我的目标是创建一个满足以下要求的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})

0 个答案:

没有答案