【问题标题】:Gradle Copy Task: How to overwrite existing files?Gradle Copy Task:如何覆盖现有文件?
【发布时间】:2012-09-01 10:26:03
【问题描述】:

Copy api 没有提到可以设置的标志/属性。那么默认操作是什么,如何修改呢?


根据this

从 Gradle 0.9.1 开始,复制任务总是覆盖文件。另一个 尚不支持策略。

【问题讨论】:

    标签: java copy gradle overwrite


    【解决方案1】:

    正如问题文本所说,Copy 任务会覆盖文件,目前不支持其他策略。如果这不适合您的情况,您可以随时退回到 Ant 任务。

    【讨论】:

    • 谢谢,我只是想直接从马口中听到! :D 知道何时实施这些新策略(如果有的话)?
    • 现在情况如何?
    【解决方案2】:

    查看 DuplicatesStrategy http://www.gradle.org/docs/1.7-rc-1/release-notes#duplicate-file-handling-for-copy-and-archive-operationshttp://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)
          }
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2015-01-20
      • 2015-01-03
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多