如何在gradle中使用复制任务复制目录

如何在gradle中使用复制任务复制目录,gradle,directory,copy,Gradle,Directory,Copy,我想在单个复制任务中将一系列文件和整个目录复制到另一个目录。我可以复制单个文件和目录的内容,但如何复制目录本身 这是我的任务: task myTask(type: Copy) { from 'path/to/file' from 'path/to/dir' into 'path/to/target' } 它可以复制文件,但仅复制目录中的文件。我想以path/to/target/dir中的目录内容结束(而不是path/to/target) 我通过以下方法找到了解决方法:

我想在单个复制任务中将一系列文件和整个目录复制到另一个目录。我可以复制单个文件和目录的内容,但如何复制目录本身

这是我的任务:

task myTask(type: Copy) {
    from 'path/to/file'
    from 'path/to/dir'
    into 'path/to/target'
}
它可以复制文件,但仅复制目录中的文件。我想以
path/to/target/dir
中的目录内容结束(而不是
path/to/target

我通过以下方法找到了解决方法:

task myTask(type: Copy) {
    from 'path/to/file'
    from 'path/to'
    into 'path/to/target'
    include 'dir'
}

但这很容易发生名称冲突。实际上,我有许多文件和目录要复制,我想把它作为一项任务。

我知道的解决您问题的唯一方法是:

task myTask(type: Copy) {
    into 'path/to/target'
    from 'path/to/file'

    into ('dir') {
       from 'path/to/dir'        
    }
}

请记住,
into:('dir')
construction相对于
path/to/target/
location

在Gradle网站上有一本书可以下载,或者点击“获取免费电子书”:“Gradle Beyond the Basics”可以直接回答您在第3页的问题(转换目录结构)

应用于您的示例,解决方案如下:

    task myTask(type: Copy) {
        from 'path/to/file'
        from 'path/to/dir' {
            into 'dir'
        }
        into 'path/to/target'
    }

限制是它不会动态确定第二级目标目录(dir)的名称从源头上看,这是一种干净的方法。

这是一种改进,但我不相信没有一种方法可以正确地做到这一点/SimplyUpNote这是第一个正确的答案。@adam嗯,这是一个比你更好的解决方案,因为这更“OO”-行为的定制包含在命令中,而您的行为更像是一个回调或另一个回调command@Bohemian我看到相同的4行以不同的顺序排列:)