使用gradle将源目录列表下的文件复制到目标目录

时间:2016-04-27 10:29:36

标签: gradle groovy copy

我需要将目录列表下的文件复制到目标列表中的相应目录。假设我有一个源目录列表,如'A','B','C'和目标目录列表,如'X','Y','Z'。我需要做的是复制A目录下的文件以复制到X目录,从B复制到Y和C到Z.我已经为此创建了一个gradle任务。但是我收到了错误

task copyDirs( ) {
  def targetDirList = ['/target1', '/target2', '/target3'].toArray()
  def sourceDirList = ['/source1', '/source2', '/source3'].toArray()

  [sourceDirList,targetDirList].transpose().each {
    copy{
        from it[0].toString()
        into it[1].toString()
    }
  }
}

以下是我尝试执行时获得的异常

 No signature of method: org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.getAt() is applicable for argument types: (java.lang.Integer) values: [0]
 Possible solutions: getAt(java.lang.String), putAt(java.lang.String, java.lang.Object), wait(), grep(), getClass(), wait(long)

1 个答案:

答案 0 :(得分:1)

这是因为您使用的it与复制结束有关,而不是您正在重复使用的值。只需命名您的元素:

[sourceDirList,targetDirList].transpose().each { d ->
    copy{
        from d[0].toString()
        into d[1].toString()
    }
}