使用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"
}
}