2017-03-14 7 views
1

Ich versuche, eine Datei in Gradle zu kopieren und gleichzeitig umzubenennen, wobei der neue Name der Datei vom Namen des Unterordners abhängig sein sollte.Gradle: Datei kopieren und umbenennen je nach Unterordner

Meine sieht Dateistruktur wie das zum Beispiel:

├── 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 

ich die mapping.txt und es umbenennen kopieren möchten. Der neue Name sollte mapping-envTestNormalBuild.txt sein - das heißt sollte den Namen des Unterverzeichnisses sind es in veröffentlicht wurde

kann mir jemand sagen, ob/wie dies möglich ist mit der gradle Kopie + Feature umbenennen.?

habe ich gesehen, dass die reverse is possible, das heißt eine Datei wie foo-bar.txt in ein Verzeichnis/Pfad foo/bar.txt und ähnliches zu kopieren.

Antwort

2

können Sie versuchen, z.B .:

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" 
    } 
} 

Eine Demo kann here finden.

+0

Cool, gute Zeiger dort. Ich kann damit arbeiten. – fgysin

+0

Vielleicht noch eine Frage: Das wird die Datei einschließlich der Unterverzeichnisse, in denen es gefunden wird, erstellen ... egal wie ich diese Verzeichnisse überspringen kann, d. H. Die umbenannte Datei in den von mir in 'toPath' angegebenen Pfad einfügen? – fgysin

+0

@fgysin, ich denke, es kann über [FileCopyDetails] (https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileCopyDetails.html) konfiguriert werden. Sie müssen nur ein wenig experimentieren;) – Opal

Verwandte Themen