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

How to copy a directory using Copy task in gradle

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

这是我的任务:

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

复制文件OK,但只复制目录中的文件。我想以 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') 施工相对于 path/to/target/ 位置

Gradle 网站 here or click "Get Free Ebook" here 上有一本书可供下载:"Gradle Beyond the Basics" 直接回答了您的问题第 3 页的问题(转换目录结构)。

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

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

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