如何使用 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 中的复制任务复制目录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 android studio 将复制任务运行到资产文件夹中
如何在gradle中从一个位置复制到另一个位置时即时修改文件
想要使用 Gradle 将 repo 中的 .ebextensions (AWS Beanstalk) 目录复制到 Java jar 文件的根目录中