复制Gradle中的整个目录

时间:2016-08-23 20:13:02

标签: gradle

我有一个像这样的目录结构:

file1.txt
file2.txt
dir1/
    file3.txt
    file4.txt

我想将整个结构Gradle to copy用于另一个目录。我试过这个:

task mytest << {
    copy {
        from "file1.txt"
        from "file2.txt"
        from "dir1"

        into "mytest"
    }
}

但这导致以下结果:

mytest/
    file1.txt
    file2.txt
    file3.txt
    file4.txt

请参阅dir1的副本复制 dir1中的文件,而我想复制dir1 本身。< / p>

是否可以直接使用Gradle copy

执行此操作

到目前为止,我只能提出这个解决方案:

task mytest << {
    copy {
        from "file1.txt"
        from "file2.txt"

        into "mytest"
    }

    copy {
        from "dir1"
        into "mytest/dir1"
    }
}

对于我的简单示例,它并不多,但在我的实际情况中,我想要复制许多目录,而且我不想重复这么多。

4 个答案:

答案 0 :(得分:24)

您可以使用.作为目录路径,使用include来指定要复制的文件和目录:

copy {
    from '.'
    into 'mytest'
    include 'file*.txt'
    include 'dir1/**'
}

如果frominto都是目录,那么您最终将获得目标目录中源目录的完整副本。

答案 1 :(得分:1)

我知道这有点晚了,但我尝试了上面的@Andrew解决方案,它复制了目录中的所有内容。 &#34;&#34;现在不需要代表直接参与。 所以我做了一些研究  并找到了this

并基于它创建了以下代码(使用最新检查):

任务resourcesCopy(){

doLast {
    copy {
        from "src/main/resources"
        into "./target/dist/WEB-INF/classes"
    }
    copy {
        from "GeoIP2.conf"
        into "./target/dist/WEB-INF"
    }
}

}

答案 2 :(得分:0)

我不知道这种语法已经存在多久了,但是似乎更清楚了。

task copyToRelease(dependsOn: [deletePreviousRelease], type: Copy) {
    from('build/dist') {
        include '**/*.*'
    }
    destinationDir(new File('../htmlrelease/src/main/webapp/canvas')) 
}

答案 3 :(得分:-1)

也许也很有帮助:使用fileTree递归复制整个目录,例如,

task mytest << {
    copy {
        from fileTree('.')
        into "mytest"
    }
}