2016-08-23 82 views
6

我有这样的目录结构:复制整个目录的摇篮

file1.txt 
file2.txt 
dir1/ 
    file3.txt 
    file4.txt 

我想用Gradle to copy是整个结构到另一个目录。我尝试这样做:

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 
     from "dir1" 

     into "mytest" 
    } 
} 

但是这导致了以下内容:

mytest/ 
    file1.txt 
    file2.txt 
    file3.txt 
    file4.txt 

看到,从dir1副本中dir1复制的文件,而我想复制dir1本身

是否可以直接用Gradle copy做到这一点?

到目前为止,我只能够拿出这样的解决方案:

task mytest << { 
    copy { 
     from "file1.txt" 
     from "file2.txt" 

     into "mytest" 
    } 

    copy { 
     from "dir1" 
     into "mytest/dir1" 
    } 
} 

对于我的简单的例子,没有太多吧,但在我的实际情况下,有很多目录我要复制,我不想重复这么多。

回答

13

您可以使用.的目录路径和include来指定,要复制的文件和目录:

copy { 
    from '.' 
    into 'mytest' 
    include 'file*.txt' 
    include 'dir1/**' 
} 

如果同时frominto是目录,你会用完整副本结束目标目录中的源目录。

+0

与此问题是如果我有这个文件夹中的其他文件,我*不*要复制。我可以使用'excludes'参数,但这会很容易出错,因为将来可能会添加其他子目录。 – Kip

+0

“包含”为你工作吗?我已经扩大了答案,以显示如何指定要复制的文件/目录。 –

+0

非常感谢! – Kip

0

我知道这有点晚,但我尝试了上面的@Andrew解决方案,它复制了目录中的所有内容。 “。”现在不需要代表一个直接的gradle。 所以我做了一些研究 发现this

,并创建了下面的代码(以跟上时代的检查),在此基础上:

任务resourcesCopy(){

doLast { 
    copy { 
     from "src/main/resources" 
     into "./target/dist/WEB-INF/classes" 
    } 
    copy { 
     from "GeoIP2.conf" 
     into "./target/dist/WEB-INF" 
    } 
} 

}

-1

也许还有帮助:使用fileTree递归复制整个目录,例如,

task mytest << { 
    copy { 
     from fileTree('.') 
     into "mytest" 
    } 
}