Frage Gradle - Datei kopieren / umbenennen - macht 0 Dateigröße / Bytes für alle Dateien


Ich benutze Gradle Build, um Java zu kompilieren.

Während des Builds bekomme ich erfolgreiche Build-Ergebnisse, ABER ich möchte einige zusätzliche Dateien hinzufügen, die nur die Kopie oder das Umbenennen einiger Dateien sind, die in der gebauten ".war" -Datei von Gradle Build existieren.

Der folgende Code ist, was ich verwende. Was ich versuche zu tun ist:

1. Entarre eine WAR-Datei in einem Build / Tmp / WarApplication-Ordner
2. Kopieren / Umbenennen einer Datei, d. H. Oldname-1.2.3 in newname-1.2.3
3. Kopieren / benennen Sie die Datei oldname.war.properties in newname.war.properties um
4. Kopieren / benennen Sie die Datei oldname.jar.properties in newname.jar.properties um
5. Führen Sie alle Daten im Ordner build / tmp / warApplication aus, und erstellen Sie die ursprüngliche WAR-Datei (das ist projectname.war)

Problem:
1. Nachdem Unwar Schritt abgeschlossen ist, sehe ich unter Tmp / WarApplication Ordner, alle Dateien in der Struktur haben eine gültige Dateigröße. 2. warApplication.doLast - funktioniert, d.h. es gibt keine Fehlermeldung.
3. Sobald alle Kopier- / Umbenennungsschritte abgeschlossen sind, sehe ich die Dateigröße unter tmp / warapplication Ordnerbaum oder Teilbaum Ebene ist jetzt 0 Bytes groß.

Was vermisse ich? Wie kann ich eine Datei A der Größe X Bytes in die Datei B derselben X Bytes kopieren.

// add a few extra files
warApplication.doLast {
   def tempWarDirU = new File("${buildDir}/tmp/warApplication")
   tempWarDirU.mkdirs()
   ant.unwar(src: "${buildDir}/thidsWar/${thidsProjectName}.war",
            dest: "${buildDir}/tmp/warApplication")

   println ""
   println "--- Inside warApplication - last stage ---"
   println ""
   copy {
      from "${buildDir}/tmp/warApplication"
      into "${buildDir}/tmp/warApplication"
      rename (/([a-z]+)-([0-9]+\.[0-9]+.+)/, 'newname-$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      rename (/([a-z]+)\.war\.([a-z]+)/, 'newname.war.$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      rename (/([a-z]+)\.jar\.([a-z]+)/, 'newname.jar.$2')
   }

   ant.jar ( update: "true", destfile: "${buildDir}/thidsWar/${thidsProjectName}_1.war") {
      fileset(dir: "${buildDir}/tmp/warApplication",includes: '*/**')
   }
   println ""
   println ""
}

11
2017-12-28 00:55


Ursprung


Antworten:


Eine einfachere Lösung wäre, dank Pete N.

task renABCToXYZ {
    doLast {
        file("ABC").renameTo(file("XYZ"))
    }
}

16
2018-01-13 23:01



Ich muss den "include" Abschnitt erwähnen. ohne dass es alle Dateien in 0 Bytes in der Struktur kopiert hat.

   copy {
      from "${buildDir}/tmp/warApplication"
      into "${buildDir}/tmp/warApplication"
      include "${thidsProjectName}-$project.version"
      rename (/([a-z]+)-([0-9]+\.[0-9]+.+)/, 'newname-$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      include "${thidsProjectName}.war.properties"
      rename (/([a-z]+)\.war\.([a-z]+)/, 'newname.war.$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      include "${thidsProjectName}.jar.properties"
      rename (/([a-z]+)\.jar\.([a-z]+)/, 'newname.jar.$2')
   }

5
2017-12-28 01:28