Gradle 在单个复制任务中将多个文件解压到不同的目录
Gradle untar multiple files to different directories in single copy task
我正在编写一个 gradle 脚本,用于从我们的存储库管理器下载一系列压缩包。假设我有一个如下所示的临时目录:
temp/lib_x86.tar.gz
temp/lib_armv7.tar.gz
temp/lib_armv7s.tar.gz
temp/lib_arm64.tar.gz
我想做的是通过一个复制任务将它们全部解压到不同的目录中,因为所有的压缩包都包含相同的静态库,但针对不同的体系结构编译。我的最终目标是从中创建一个胖库,但无法找到配置复制任务的简洁方法。
到目前为止我有:
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'
}
}
问题是它似乎只对其中一个文件有效,尽管打印语句显示它处理了所有 4 个文件。
有什么想法吗?
好的,已经解决了。在您提供的示例中,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。
我正在编写一个 gradle 脚本,用于从我们的存储库管理器下载一系列压缩包。假设我有一个如下所示的临时目录:
temp/lib_x86.tar.gz
temp/lib_armv7.tar.gz
temp/lib_armv7s.tar.gz
temp/lib_arm64.tar.gz
我想做的是通过一个复制任务将它们全部解压到不同的目录中,因为所有的压缩包都包含相同的静态库,但针对不同的体系结构编译。我的最终目标是从中创建一个胖库,但无法找到配置复制任务的简洁方法。 到目前为止我有:
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'
}
}
问题是它似乎只对其中一个文件有效,尽管打印语句显示它处理了所有 4 个文件。 有什么想法吗?
好的,已经解决了。在您提供的示例中,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。