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

时间:2013-10-22 14:37:29

标签: gradle

在我们的构建中,我们有这些“组件”目录。子项目使用不同的组件集,并且必须将这些组件的内容复制到构建目录中。因此,假设每个子项目将包含的组件列表定义为:project.ext.components = ['aaa', 'bbb', 'ccc']。它们存在于目录(来自项目根目录)中,如components/aaacomponents/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属性似乎很有希望,但我无法找到一种方法让它发挥作用。

1 个答案:

答案 0 :(得分:2)

task copy(type: Copy) {
    into buildDir
    components.each {
        from "components/$it"
    }
}