2016-08-02 25 views
0

Ich möchte einen Wert in unserer log4j2.xml mit Gradle während des Builds ersetzen. Ich fand einen Weg, das zu tun:Wie in Log4j2.xml mit Gradle zu ersetzen?

task reaplaceInLogFile { 
    String apiSuffix = System.properties['apiSuffix'] ?: '' 
    println "In my task" 
    String contents = file('src/main/resources/log4j2.xml').getText('UTF-8') 
    println "File found" 
    contents = contents.replaceAll("svc0022_operations", "svc0022_operations${apiSuffix}") 
    new File('src/main/resources/log4j2.xml').write(contents, 'UTF-8') 
} 

Doch dies ändert sich auch die Quelldatei dauerhaft und ich möchte nicht, dass zu tun. Ich möchte die log4j2.xml ändern, die nur in der Build-Zip enthalten sein wird. Ich weiß, dass ich so etwas wie diese verwenden:

tasks.withType(com.mulesoft.build.MuleZip) { task -> 
    String apiSuffix = System.properties['apiSuffix'] ?: '' 
    task.eachFile { 
     println name 
     if (name == 'mule-app.properties') { 
      println "Expanding properties for API Version suffix: ${apiSuffix}" 
      filter { String line -> 
       line.startsWith("${serviceId}.api.suffix") ? "${serviceId}.api.suffix=${apiSuffix}" : line 
      } 
     } 

Aber ich weiß nicht, was die Art der log4j2 Datei. Wenn es einen anderen Weg gibt, werde ich dankbar sein!

Wir verwenden Mule Gradle Plugin.

Antwort

1

Der Typ ist nicht der Typ der log4j2-Datei, sondern der Typ der Aufgabe, die die ZIP-Datei erstellt oder wo auch immer Ihre log4j2-Datei gepackt wird. Wenn die log4j2-Datei in der ZIP-Datei enthalten ist, die von einer MuleZip-Task generiert wird, können Sie einfach einen weiteren if -branch für die log4j2-Datei hinzufügen.

Aber eigentlich ist es wahrscheinlich besser, nur die konkrete Aufgabe zu bearbeiten, die die log4j2-Datei in ein Archiv packt, anstatt alle Aufgaben desselben Typs.

Darüber hinaus sollten Sie filesMatching statt eachFile mit einem if ich denke verwenden können.

+0

Vielen Dank für Ihre Antwort. Leider ist log4j2.xml nicht in der Sammlung in der MuleZip-Task enthalten. Hier ist der Code für die Aufgabe https://github.com/mulesoft-labs/mule-gradle-plugin/blob/master/src/main/groovy/com/mulesoft/build/MuleZip.groovy –

+0

Wie ich schon sagte. Ändern Sie die Aufgabe, die die 'log4j2.xml'-Datei packt. Ich müsste Ihre 'build.gradle' und den Pfad zur' log4j2.xml'-Datei sehen, um eine konkrete zu ändernde Aufgabe vorzuschlagen. – Vampire

+0

Unsere log4j2.xml befindet sich standardmäßig unter "src \ main \ resources \ log4j2.xml". Hier ist unser Build.gradle: https://www.dropbox.com/s/iuv4j9htpseyed4/build.gradle?dl=0 –