【问题标题】:Gradle How to: Unzip a ZIP file within a ZIP file from a dependency, with incremental build functionality maintainedGradle 如何:从依赖项中解压缩 ZIP 文件中的 ZIP 文件,并保持增量构建功能
【发布时间】:2019-11-15 05:06:06
【问题描述】:

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

我找到的唯一解决方案是让一个 Copy 任务解压缩某个临时目录中的主存档,并让第二个 Copy 任务查看 temp 目录。

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

在无需维护一些中间目录或丢失增量构建功能的情况下,将 zip 解压缩到 zip 中的推荐代码模式是什么? 谢谢,克劳斯

【问题讨论】:

    标签: gradle groovy dependencies unzip


    【解决方案1】:

    类似的东西

    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" 
          } 
       } 
    } 
    

    进一步阅读,你可能对我的 cmets 感兴趣here

    【讨论】:

    • 效果很好。非常感谢!您是否偶然也知道如何防止创建空目录,以及如何为不同的 zip 文件管理不同的目标目录?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多