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

Posted

技术标签:

【中文标题】如何使用 gradle 中的复制任务复制目录【英文标题】:How to copy a directory using Copy task in gradle 【发布时间】:2016-03-20 05:50:00 【问题描述】:

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

这是我的任务:

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'

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

【问题讨论】:

【参考方案1】:

我知道的唯一解决方案:

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

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

请记住,into: ('dir') 的构造工作相对于path/to/target/ 位置

【讨论】:

这是一个改进,但我不敢相信没有办法正确/简单地做到这一点 点赞这个人...这是第一个正确答案。【参考方案2】:

在 Gradle 网站here 上可以下载一本书,或者点击“获取免费电子书”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)的名称,但它是一种干净的方法。

【讨论】:

@adam 好吧,它比你的解决方案更好,因为这更“OO” - 行为的自定义包含在命令中,而你的更像是回调或其他进入命令跨度> @Bohemian 我以不同的顺序看到相同的 4 行 :)

以上是关于如何使用 gradle 中的复制任务复制目录的主要内容,如果未能解决你的问题,请参考以下文章

如何使 xampp 不显示目录列表? [复制]

如何使用 android studio 将复制任务运行到资产文件夹中

如何在gradle中从一个位置复制到另一个位置时即时修改文件

想要使用 Gradle 将 repo 中的 .ebextensions (AWS Beanstalk) 目录复制到 Java jar 文件的根目录中

如何使特定平台可以访问功能? [复制]

如何复制名称中带有空格的目录