2016-05-02 14 views
0

Ich habe, was ich hoffe, ist eine einfache Frage, die ich hatte kein Glück, eine Antwort zu finden.Gradle processResources korrumpiert .jks

Ich möchte die build.gradle Datei die Version in meiner Spring Boot-Anwendung durch Ersetzen bestimmter Variablen festlegen. Dies funktioniert wie in der Werbung:

def tokens = [ 
    "version": 'project.version.toString()', 
    "projectName": project.name, 
    "groupId": rootProject.group, 
    "artifactId": project.name 
] 
processResources{ 
    filter (ReplaceTokens, tokens: tokens) 
    outputs.upToDateWhen{ false } 
} 

Dieser Code jedoch ersetzt auch etwas in der Java-Schlüsselspeicher, die ich auch in meine Ressourcen enthalten, die es verdirbt. Wenn ich ant-Matcher verwende, um etwas auszuschließen, das nicht die Datei ist, die ich ersetzen möchte, wird nichts anderes kopiert. d. h., '* .properties'

Gibt es eine Möglichkeit, den Token-Austausch nur für bestimmte Dateien durchzuführen, während der Rest der Dateien im Ressourcenverzeichnis noch kopiert wird? Muss ich eine separate Kopieraufgabe für Nicht-Eigenschaftendateien definieren?

Danke!

+0

Haben Sie eine Lösung gefunden? @ blur0224? –

+0

Ich habe nicht. Ich bin in eine andere Richtung gegangen. – blur0224

Antwort

1

Die Lösung besteht darin, alle Binärdateien zu überspringen, während die Task processReousrces ausgeführt wird. Zum Beispiel verwende ich expand(), um Token in Textdateien mit Werten zu ersetzen, die im Gradle-Skript berechnet wurden. So

  1. JKS überspringen
  2. Move it auf die binären Ressourcen

Hier Datei, wie ich die Dateien in dem Verzeichnis src/main/resources/certs/ überspringen. Die doLast() garantiert, dass die JKS-Datei an den entsprechenden Speicherort kopiert wird, wenn sie mit den Ressourcen abgeschlossen ist.

ext { 
    commit = 'git rev-parse --short HEAD'.execute().text.trim() 
    branch = 'git rev-parse --abbrev-ref --symbolic HEAD'.execute().text.trim() 
} 

/** 
* Processes the resources, excluding the certs while building. 
*/ 
processResources { 
    // Exclude the certs files to be processed as text 
    exclude "**/certs/*" 

    expand(
    timestamp: new Date(), 
    commit: commit, 
    branch: branch, 
    version: project.version 
) 

    // Copy the jks file to the resources (classpath) 
    doLast { 
    copy { 
     from "src/main/resources/certs/server.jks" 
     into "$buildDir/classes/main/certs" 
    } 
    } 
} 
Verwandte Themen