2017-03-14 44 views
1

我试图在gradle中复制文件并将其同时重命名,其中文件的新名称应该取决于它所在的子文件夹的名称。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和类似。

回答

2

你可以试试例如为:

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

+0

那里很酷,很好的指针。我可以与此合作。 – fgysin

+0

也许还有一个问题:这将创建包含它的子目录的文件...以任何方式我可以跳过这些目录,即将重命名的文件放在我在'toPath'中指定的实际路径中? – fgysin

+0

@fgysin,我想可以通过[FileCopyDetails](https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileCopyDetails.html)进行配置。你只需要尝试一下;) – Opal

相关问题