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

Gradle:在配置和执行阶段之间拆分复制任务,gradle,build.gradle,Gradle,Build.gradle,我在子项目目录中的build.gradle中有一个任务: task copyResources { copy { from 'cli' into 'build/cli' } copy { from 'module' into 'build/module' } } 它的目的是将两个文件夹从projectdir复制到Gradle的build文件夹。但由于目标文件夹被称为“构建”,其他任务的执行可能会

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

task copyResources {

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

    copy {
        from 'module'
        into 'build/module'
    }
}
它的目的是将两个文件夹从projectdir复制到Gradle的build文件夹。但由于目标文件夹被称为“构建”,其他任务的执行可能会引入一些奇怪的行为,例如

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

正在跳过任务“:copyResources”,因为它没有任何操作

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


是否可以推迟此任务的执行,使其在“生成”任务之后运行?或者我必须创建不同的任务,使用一些普通Java/Groovy代码,而不使用Gradle的拷贝,并且只在执行阶段运行它?

按照定义任务的方式,拷贝是作为配置时间的一部分进行的。如果您想将其移动到执行时,可以将其包装成如下所示的doLast块

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

      copy {
          from 'module'
          into 'build/module'
      }
    }
}
以下是一些有助于理解执行与配置时间的文档: