2015-12-14 36 views
9

我想将一系列文件和整个目录复制到单个Copy任务中的另一个目录。我可以复制单个文件和目录的内容,但是如何复制目录本身?如何使用Gradle中的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' 
    into 'path/to/target' 
    include 'dir' 
} 

但是,这是容易出现名称冲突。我实际上有很多文件和目录要复制,而且我想让它成为一项任务。

回答

5

有一本书,是可供下载的摇篮网站上here或点击“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)的名称,但它是一个干净的方法。

+0

哇,它是如此不同于我的回答 – AdamSkywalker

+0

@adam这是一个比你更好的解决方案,因为这是更多的“OO” - 行为的定制包含在命令中,而你的更像是一个回调或另一个命令 – Bohemian

+0

@Bohemian我看到相同的4行以不同的顺序:) – AdamSkywalker

5

我知道你的问题的唯一解决办法:

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

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

记住into: ('dir')建设工程相对要path/to/target/位置

+0

这是一个改进,但我不相信有没有办法做到这一点正确/简单 – Bohemian

相关问题