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

标签 gradle groovy dependencies unzip

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

我发现的唯一解决方案是使用一个Copy任务将主存档解压缩到某个temp目录中,并使用第二个Copy任务查看temp目录。

令我困扰的是我无法删除temp目录,或者,如果执行此操作,则第一个Copy任务总是会再次下载并创建temp目录-尽管第二个Copy任务无关。

在不维护某个中间目录或丢失增量构建功能的情况下,建议使用哪种代码模式在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

关于gradle - Gradle如何:从依赖项中解压缩ZIP文件中的ZIP文件,并保持增量生成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56888227/

相关文章:

android - 在Android项目build.gradle文件中更新Google Firebase依赖项

java - 错误 : In project 'app' a resolved Google Play services library dependency depends on another at an exact version while iintegrating onesignal

java - 为什么这个正则表达式在 Java 而不是 Groovy

groovy - 在 Groovy 中填充 map 时出现问题

java - 检测未连接图中的循环

android - 插件太旧,请更新到最新版本,或将 ANDROID_DAILY_OVERRIDE 环境变量设置为

gradle - 如何使Gradle任务执行两次而不显示最新状态?

android - 实现ActionBarSherlock,gradle错误

java - 从 Cassandra 中提取的 Netflix Zuul 过滤器无法正常工作

python - Pip 安装失败 : SSL required