Gradle 从另一个任务复制渐变触发器文件
我有一个gradle任务,它扫描依赖jar,我想把所有依赖jar放在一个新目录中 使用ResolvableDependencies API,我能够识别源文件夹和目标文件夹 下面是源文件夹和目标文件夹的示例 源路径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
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