我的构建中有一个相对复杂的目录结构,我想从中创建多个ZIP文件。结构是这样的:
+ project root
+ -- build.gradle
+ -- + foo
+ -- bar-1
| + -- bar-1.a.json
| + -- bar-1.a.xml
| + -- bar-1.b.json
| + -- bar-1.b.xml
|
+ -- bar-2
| + -- bar-2.a.json
| + -- bar-2.a.xml
| + -- bar-2.b.json
| + -- bar-2.b.xml
|
+ ...
+ -- bar-n
+ -- bar-n.a.json
+ -- bar-n.a.xml
+ -- bar-n.b.json
+ -- bar-n.b.xml
从这个结构中,我想为每个bar-x
目录创建ZIP文件,例如:在foo/bar-1
目录中,应在out/foo/bar-1.zip
中创建一个ZIP文件,从foo/bar-2
创建一个ZIP文件应在out/foo/bar-2.zip
中创建,依此类推
重要的是,新目录可能会在稍后出现,因此我无法对名称进行硬编码,Gradle应在每个版本的foo
中列出目录。
有人可以给我一个如何实现这个目标的样本吗?
答案 0 :(得分:3)
以下内容应该如下:
task zipAll
file('foo').eachDirMatch(~/bar-.*/) { barDir ->
def taskName = "zip${barDir.name.capitalize()}"
task "$taskName"(type: Zip) {
from barDir
destinationDir file('out/foo/')
baseName barDir.name
}
zipAll.dependsOn taskName
}