另一个任务

时间:2017-09-07 08:39:47

标签: gradle

我有一个gradle任务,它扫描相关的jar,我想将所有相关的jar放在一个新目录中

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

下面的

是示例源和目标文件夹

SOURCEPATH

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

TARGETPATH

D:\sourcecode\18_04_2017\my-project\build-repo\io\netty\netty-handler\4.0.27.Final

我在build.gradle中有以下任务

task myCopy(type: Copy)

我正在调用下面的任务,但它不起作用

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

myCopy.execute()

我从另一篇SO帖子中读到,任务无法从其他任务中调用,我们需要指定" dependsOn" 。但在我的情况下,我需要在循环中复制文件,源和目标路径是根据循环中的条件派生的。  在这种情况下,我如何使用gradle复制方法?或者还有其他方法可以复制吗?

1 个答案:

答案 0 :(得分:0)

请告诉您如何扫描这些依赖项?

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

task yourtask {

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

  doLast { 
    copy {
      from (sourcePath)
      into (targetPath)
      include '*.jar'
    }
  }
}

请注意,我们将其包装到doLast中,因为在配置阶段               即使你没有把它叫做执行,它也会被执行。 dolast将其移至执行阶段。

还要记住输入和输出,以确定何时应该或不应该执行任务,并标记为UP-TO-DATE,这些是在使用类型为Copy <的任务时已经设置的/ p>