Gradle Copy任务始终是最新的

时间:2015-09-02 05:56:10

标签: android gradle android-gradle build.gradle gradlew

我的gradle任务看起来像这样

a = 
     0.0   -1.0   -2.0   -3.0
     1.0    0.0   -1.0   -2.0
     2.0    1.0    0.0   -1.0
     3.0    2.0    1.0    0.0

任务始终是最新的。如果我把块放在配置阶段,即doLast之外,一切正常。但即使我执行了我不想要的gradlew任务,代码也会执行。我做错了什么?

2 个答案:

答案 0 :(得分:2)

复制任务只有在有要复制的内容时才会执行。告诉它要复制什么是配置任务的一部分,因此需要在配置阶段而不是执行阶段完成。这些是非常重要的概念,您可以在Gradle用户指南或Gradle论坛中阅读这些概念。

作为执行任务的一部分,

doFirst和doLast块在执行阶段执行。两者都来不及告诉任务要复制什么:doFirst在主要任务操作之前立即执行(在这种情况下是复制),但是(很快)在跳过和最新检查之后执行(基于任务的配置)。 doLast在主要任务操作之后执行,因此显然为时已晚。

答案 1 :(得分:0)

您应该按以下方式定义任务:

task xml_file_to_vs_build(type: Copy) {
   println("copying strings.xml")
   from 'src/main/res/values'
   into '../vso_build'
   include 'strings.xml'
}