Gradle:根据子文件夹

时间:2017-03-14 08:01:14

标签: gradle copy rename

我正在尝试在gradle中复制文件并同时重命名,其中文件的新名称应该取决于它所在的子文件夹的名称。

我的文件结构如下所示:

├── apk
│   └── app-envTest-normalBuild-release.apk
├── logs
│   └── manifest-merger-envTest-normalBuild-release-report.txt
└── mapping
    └── envTestNormalBuild
        └── release
            ├── dump.txt
            ├── mapping.txt
            ├── seeds.txt
            └── usage.txt

我想复制mapping.txt并重命名。新名称应为mapping-envTestNormalBuild.txt - 即应包含其发布的子目录的名称。

有人可以使用gradle copy + rename功能告诉我这是否可行吗?

我见过reverse is possible,即将foo-bar.txt这样的文件复制到目录/路径foo/bar.txt等等。

1 个答案:

答案 0 :(得分:3)

您可以尝试例如:

task clean {
  doLast {
    project.file('dest').deleteDir()
  }
}

task cp(type: Copy) {
  dependsOn clean
  from 'mapping/envTestNormalBuild/release'
  into 'dest'
  include 'mapping.txt'
  eachFile { fcp ->
      fcp.name = "$fcp.file.parentFile.parentFile.name-$fcp.name"
  }
}

可以找到演示here