Gradle 如何:从依赖项中解压缩 ZIP 文件中的 ZIP 文件,并保持增量构建功能

Gradle How to: Unzip a ZIP file within a ZIP file from a dependency, with incremental build functionality maintained

我在 Nexus 服务器上有一个(主)ZIP 存档,里面有几个其他 ZIP 存档,我需要 a) 从某个 ZIP 压缩包中提取所有 **/.hpp b) 从主存档中的所有 ZIP 存档中提取所有 **/.hpp

我找到的唯一解决方案是让一个复制任务在某个临时目录中解压主存档,然后让第二个复制任务查看临时目录。

困扰我的是我无法删除临时目录,或者,如果我这样做,第一个复制任务总是会再次下载并创建临时目录 - 尽管第二个复制任务无关。

在 zip 中解压 zip,而不必维护一些中间目录或丢失增量构建功能的推荐代码模式是什么? 谢谢,克劳斯

像这样

configurations {
   zip
} 
dependencies {
   zip 'foo:bar:1.0@zip'
}
task unpackHpp {
   inputs.files configurations.zip
   outputs.dir "$buildDir/hpp" 
   doLast {
      FileTree mainTree = zipTree(configurations.zip.singleFile)
      File zip1 = mainTree.matching { include 'file1.zip'}.singleFile
      File zip2 = mainTree.matching { include 'file2.zip'}.singleFile
      copy {
         from zipTree(zip1).matching { include '**/*.hpp' } 
         from zipTree(zip2).matching { include '**/*.hpp' } 
         from mainTree.matching { include '**/*.hpp' } 
         into "$buildDir/hpp" 
      } 
   } 
} 

如果想进一步阅读,您可能会对我的评论感兴趣 here