我正在编写一个gradle脚本,从我们的repo manager下载一系列tarball。让我们假设我的临时目录如下:
温度/ lib_x86.tar.gz
温度/ lib_armv7.tar.gz
温度/ lib_armv7s.tar.gz
温度/ lib_arm64.tar.gz
我想要做的是将所有这些文件解压缩到不同目录中,因为所有tarball都包含相同的静态库,但是针对不同的体系结构进行了编译。我的最终目标是创建一个胖库,但无法找到一种简洁的配置复制任务的方法。 到目前为止,我有:
copy {
fileTree(dir: 'temp').include('*.tar.gz').each {File simLib ->
println "Untar ${simLib.name}"
from tarTree(resources.gzip(simLib.name))
into "temp/${simLib.name}"
include '*.a'
}
}
问题是它似乎仅适用于其中一个文件,即使print语句显示它处理所有4个文件。 有什么想法吗?
答案 0 :(得分:2)
好的,已经解决了。在示例中,您提供的copy
块将配置一次 - 最后一次获胜 - 更具体地说,列表中的最后一个设置将覆盖所有先前的设置。它需要逆转。它可以通过以下方式完成:
fileTree(dir: 'tmp').include('*.tar.gz').each { simLib ->
copy {
println "Untar $simLib.name"
def name = simLib.name - '.tar.gz'
from tarTree("tmp/${simLib.name}")
into "tmp/$name"
}
}
演示是here。