Gradle:在配置和执行阶段之间拆分复制任务

时间:2016-08-11 11:40:26

标签: gradle build.gradle

我在子项目dir中的build.gradle中有一个任务:

task copyResources {

    copy {
        from 'cli'
        into 'build/cli'
    }

    copy {
        from 'module'
        into 'build/module'
    }
}

它的目的是将两个文件夹从项目目录复制到Gradle的构建文件夹。但由于目标文件夹被称为“构建”,因此执行其他任务可能会引入一些奇怪的行为(例如,干净)。

当我尝试将此任务移至执行阶段时,它不会运行:

  

跳过任务':copyResources'因为它没有行动。

据我所知,这是正确的行为,因为必须在配置阶段设置Copy任务的源和目标。

是否可以推迟执行此任务,因此它会在“构建”之后运行。任务?或者我必须使用一些普通的Java / Groovy代码创建不同的任务,而不使用Gradle的copy(),并且仅在执行阶段运行它?

1 个答案:

答案 0 :(得分:4)

他们定义了任务,复制是在配置时间内完成的。如果要将其移动到执行时间,可以将其包装到doLast块中,如下所示。

task copyResources {
    doLast {
      copy {
          from 'cli'
          into 'build/cli'
      }

      copy {
          from 'module'
          into 'build/module'
      }
    }
}

以下是一些可能有助于理解执行与配置时间的文档:https://docs.gradle.org/current/userguide/build_lifecycle.html