在我们的构建中,我们有这些“组件”目录。子项目使用不同的组件集,并且必须将这些组件的内容复制到构建目录中。因此,假设每个子项目将包含的组件列表定义为:project.ext.components = ['aaa', 'bbb', 'ccc']
。它们存在于目录(来自项目根目录)中,如components/aaa
,components/bbb
等。我想将每个目录的内容复制到项目的build
目录中
基本上,如果我必须将其翻译成UNIX,我会做一系列副本,如:
cp -R components/aaa/* build/
cp -R components/bbb/* build/
cp -R components/ccc/* build/
这样做的好方法是什么?
我可以在任务中循环project.ext.components
并使用copy
闭包,但是如何定义任务输入/输出?该任务不是Copy
类型的任务,而只是一个doFirst
的正常任务,其中的循环和copy
闭包,因此我们无法获得输入/像我们使用Copy
任务一样免费为我们定义的输出。
我在Copy DSL中看到有includes
属性似乎很有希望,但我无法找到一种方法让它发挥作用。
答案 0 :(得分:2)
task copy(type: Copy) {
into buildDir
components.each {
from "components/$it"
}
}