Gradle脚本:将子文件夹和其他文件夹的内容复制到新位置

时间:2016-06-21 10:08:48

标签: gradle groovy copy

我有以下文件夹结构(有一个任意数量的子文件夹,名称不知道)。我只有可用的父文件夹的路径。

Parent
  | Child_folder_0
  | Child_folder_N

以及名为contentFolder

的单独文件夹

我正在尝试将每个子文件夹(及其内容)复制到其他位置,并将contentFolder的内容复制到每个子文件夹的新位置。

谢谢!

1 个答案:

答案 0 :(得分:1)

以下代码:

def parentFolder  = 'Parent'
def contentFolder = 'contentFolder'
def destDir       = 'destDir'

task copyChildFilesFromParent(type: Copy) {
    from(parentFolder) {
        include '**/*'
    }
    into destDir
}

task copyContentFilesIntoChildren() {
    (parentFolder as File).eachDir { childDir ->
        copy {
            from(contentFolder) {
                include '**/*'
            }
            into "$destDir/${childDir.name}"
        }
    }
}

task copyFiles(dependsOn: ['copyChildFilesFromParent', 'copyContentFilesIntoChildren'])

将转换以下目录结构:

├── build.gradle
├── contentFolder
│   ├── content.txt
│   └── data.dat
└── Parent
    ├── Child_folder_0
    │   ├── 0.dat
    │   └── data.0
    ├── Child_folder_1
    │   ├── 1.dat
    │   └── data.1
    ├── Child_folder_2
    │   ├── 2.dat
    │   └── data.2
    └── Child_folder_N
        ├── data.N
        └── N.dat

├── destDir
│   ├── Child_folder_0
│   │   ├── 0.dat
│   │   ├── content.txt
│   │   ├── data.0
│   │   └── data.dat
│   ├── Child_folder_1
│   │   ├── 1.dat
│   │   ├── content.txt
│   │   ├── data.1
│   │   └── data.dat
│   ├── Child_folder_2
│   │   ├── 2.dat
│   │   ├── content.txt
│   │   ├── data.2
│   │   └── data.dat
│   └── Child_folder_N
│       ├── content.txt
│       ├── data.dat
│       ├── data.N
│       └── N.dat