Gradle 从另一个任务复制渐变触发器文件

Gradle 从另一个任务复制渐变触发器文件,gradle,Gradle,我有一个gradle任务,它扫描依赖jar,我想把所有依赖jar放在一个新目录中 使用ResolvableDependencies API,我能够识别源文件夹和目标文件夹 下面是源文件夹和目标文件夹的示例 源路径 D:\Users\myuserId\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.0.27.Final\91d5c8e25150759bdfce680f318e7b3e8a493b1f 目标路径 D:\sour

我有一个gradle任务,它扫描依赖jar,我想把所有依赖jar放在一个新目录中

使用ResolvableDependencies API,我能够识别源文件夹和目标文件夹

下面是源文件夹和目标文件夹的示例

源路径

D:\Users\myuserId\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.0.27.Final\91d5c8e25150759bdfce680f318e7b3e8a493b1f
目标路径

D:\sourcecode\18_04_2017\my-project\build-repo\io\netty\netty-handler\4.0.27.Final
我的构建中有以下任务。gradle

task myCopy(type: Copy)
我正在调用下面的任务,但它不起作用

myCopy.configure{
  from (sourcePath)
  into (targetPath)
}

myCopy.execute()
我从另一篇文章中读到,任务不能从另一个任务调用,我们需要指定“dependsOn”。但在我的例子中,我需要在循环中复制文件,并且源路径和目标路径是根据循环中的条件导出的。
在这种情况下,如何使用渐变复制方法?或者我还有其他方法可以复制吗?

您能告诉我如何扫描这些依赖项吗

如果不想创建类型
Copy
任务, 可以在循环的任务中使用复制闭包

task yourtask {

inputs.dir 'some-dir'
outputs.dir 'some-dir'
//or files

  doLast { 
    copy {
      from (sourcePath)
      into (targetPath)
      include '*.jar'
    }
  }
}
请注意,我们将其包装为
doLast
,因为在配置阶段 它也将被执行,即使你没有调用它来执行
dolast
将其移动到执行阶段


还请记住输入和输出,以确定何时应执行或不应执行任务,并将其标记为最新,这些是在使用带有
副本类型的任务时已设置的,谢谢您的快速响应。现在它工作得很好。在这个代码示例中,您可以删除该任务,因为它不会做任何事情。相反,它使用
copy
方法,因为您没有将它包装成
doFirst
doLast
闭包,所以每次调用
gradle
时都会执行它,完全独立于您的任务。这是一个不理解Gradle基本原理的完美例子。@lu.koerfer我将把它回滚到上一次编辑,只是为了展示这个概念,我确实问过他是如何使用的以及他使用的任务是什么,我提到复制闭包进入doLAst{}同时还应检查输出和输入。请提供您所说的
for
-循环的代码示例。此外,您不应在任务上使用
execute
方法,而应考虑执行任务的条件:何时以及为什么需要复制文件?谢谢您的评论。根据LzerBanana提出的解决方案,我能够从循环中调用copy