Gradle Copy Task:如何覆盖现有文件?
Posted
技术标签:
【中文标题】Gradle Copy Task:如何覆盖现有文件?【英文标题】:Gradle Copy Task: How to overwrite existing files? 【发布时间】:2012-09-01 10:26:03 【问题描述】:Copy api 没有提到可以设置的标志/属性。那么默认操作是什么,如何修改呢?
根据this,
从 Gradle 0.9.1 开始,复制任务总是覆盖文件。另一个 尚不支持策略。
【问题讨论】:
【参考方案1】:正如问题文本所说,Copy
任务会覆盖文件,目前不支持其他策略。如果这不适合您的情况,您可以随时退回到 Ant 任务。
【讨论】:
谢谢,我只是想直接从马口中听到! :D 知道何时实施这些新策略(如果有的话)? 现在情况如何?【参考方案2】:查看 DuplicatesStrategy http://www.gradle.org/docs/1.7-rc-1/release-notes#duplicate-file-handling-for-copy-and-archive-operations 和 http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/DuplicatesStrategy.html。两者都应该适用于非覆盖复制(而覆盖复制是默认设置)。
duplicatesStrategy 'exclude'
还可以查看 Gradle Zip DuplicatesStrategy not working correctly 以了解嵌套“from”s 中可能存在的错误。
【讨论】:
【参考方案3】:我在使用任务复制时遇到了同样的问题,gradle 总是执行最新的检查,这会导致复制被跳过。
阅读更多关于 gradle 用户手册的内容后,我发现我们可以使用 project.copy() 方法代替任务 Copy。此方法跳过最新检查,因此文件将始终复制到目标。
task myCopy <<
copy
from (yourSourceDir)
into (yourDestDir)
【讨论】:
这看起来像是试图解决您自己创建的问题(由于<<
)。看看这个问题的公认答案:***.com/questions/16358194/…以上是关于Gradle Copy Task:如何覆盖现有文件?的主要内容,如果未能解决你的问题,请参考以下文章