使用Gradle将目录内容数组复制到单个目录中

使用Gradle将目录内容数组复制到单个目录中,gradle,Gradle,在我们的构建中,我们有这些“组件”目录。子项目使用不同的组件集,这些组件的内容必须复制到构建目录中。因此,假设每个子项目都将包含的组件列表定义为:project.ext.components=['aaa','bbb','ccc']。它们存在于目录(从项目根目录)中,如components/aaa,components/bbb,等等。我想将每个目录的内容复制到项目的build目录中 基本上,如果我必须将其转换为UNIX,我将进行一系列复制,如: cp -R components/aaa/* bui

在我们的构建中,我们有这些“组件”目录。子项目使用不同的组件集,这些组件的内容必须复制到构建目录中。因此,假设每个子项目都将包含的组件列表定义为:
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
任务那样免费获得为我们定义的输入/输出


我在中看到有一个
includes
属性似乎很有希望,但我真的想不出一个方法来让它工作。

谢谢。这就解决了原来的问题。但我有一个跟进。。。如果我想保留路径的“组件”部分,该怎么办?换句话说,复制之后,我希望有一个
build/components/aaa
目录;components.each{name->into(“components/$name”){from“components/$name”}。啊,这很有意义。不知道
进入
可能是一个了结。谢谢旁注:我很难让它工作,因为我认为
name->
部分是不必要的,我可以用
it
来代替。但是这是非常必要的,因为来自的闭包更改是它是。学习还在继续…一个好的经验法则是只对一行程序使用
it
。否则它很快就会变得混乱。
task copy(type: Copy) {
    into buildDir
    components.each {
        from "components/$it"
    }
}