【问题标题】:How to copy file and rename depending on subfolder如何根据子文件夹复制文件和重命名
【发布时间】:2017-08-04 11:18:29
【问题描述】:

我正在尝试在 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 复制+重命名功能?

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

【问题讨论】:

    标签: gradle copy rename


    【解决方案1】:

    你可以试试例如:

    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找到一个演示。

    【讨论】:

    • 也许还有一个问题:这将创建包含子目录的文件......我可以通过任何方式跳过这些目录,即将重命名的文件放在我在@中指定的实际路径中987654324@?
    • @fgysin,我猜可能是通过FileCopyDetails配置的。你只需要尝试一下;)
    • 能够使用from ... .include("...").files 解决它。 files 部分确保我们不复制任何目录。
    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2021-11-02
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多