在Gradle中复制整个目录

在Gradle中复制整个目录,gradle,Gradle,我的目录结构如下: file1.txt file2.txt dir1/ file3.txt file4.txt 我想将整个结构使用到另一个目录中。我试过这个: task mytest << { copy { from "file1.txt" from "file2.txt" from "dir1" into "mytest" } } 请参见,来自dir1的副本复制了dir1中的文件,

我的目录结构如下:

file1.txt
file2.txt
dir1/
    file3.txt
    file4.txt
我想将整个结构使用到另一个目录中。我试过这个:

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

        into "mytest"
    }
}
请参见,来自
dir1
的副本复制了
dir1
中的文件,而我想复制
dir1
本身

有没有可能直接用它来做这件事

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

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

        into "mytest"
    }

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

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

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

如果
from
into
都是目录,则最终会在目标目录中得到源目录的完整副本。

我知道这有点晚,但我尝试了上面的@Andrew solution,它复制了目录中的所有内容。 如今,不要求“.”代表直系亲属。 所以我做了一些研究 发现

并在此基础上创建了以下代码(带有最新检查):

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

可能还有帮助:使用
fileTree
递归复制整个目录,例如

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

task mytest我不知道这种语法已经存在了多久,但它似乎更清晰了一点

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

问题是,如果此文件夹中有其他文件,我不想复制。我可以使用
excludes
参数,但这很容易出错,因为将来可能会添加其他子目录。
include
对您有用吗?我对答案进行了扩展,以说明如何指定要复制的文件/目录。实际上,我需要执行
包括“dir1/**”
以复制目录1及其下的所有内容。否则它只复制了一个空的dir1目录。谢谢!正是我需要的!
task copyToRelease(dependsOn: [deletePreviousRelease], type: Copy) {
    from('build/dist') {
        include '**/*.*'
    }
    destinationDir(new File('../htmlrelease/src/main/webapp/canvas')) 
}