【问题标题】:How to copy a directory using Copy task in gradle如何使用 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'
}

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

【问题讨论】:

    标签: gradle directory copy


    【解决方案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 行 :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2020-10-06
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2012-04-17
    相关资源
    最近更新 更多