Gradle processResources - Datei enthält $ character
Wie können Sie @ ausführegradle processResources
für Dateien, die @ enthalt$
-Zeichen, ohne das @ zu verlass$
in den Dateien?
Ich habe einige statische HTML-Dateien im/resources/static
Ordner wie vom @ vorgeschlagSpring Boot Referenzdokumente. Wenn ich jedoch versuche, @ auszuführgradle processResources
, Gradle löst eine Ausnahme aus
Caused by: org.gradle.api.GradleException:
Could not copy file '[...]/src/main/resources/static/dollar.html'
to '[...]/build/resources/main/static/dollar.html'.
[...]
Caused by: groovy.lang.GroovyRuntimeException:
Failed to parse template script (your template may contain an error
or be trying to use expressions not currently supported): startup failed:
SimpleTemplateScript7.groovy: 1: illegal string body character after dollar sign;
solution: either escape a literal dollar sign "\$5"
or bracket the value expression "${5}" @ line 1, column 10.
out.print("""<!DOCTYPE html>
Soweit ich weiß, tritt das Problem auf, weil es ein @ gib$
Zeichen in einer der statischen Dateien und$
ist ein reserviertes Zeichen für Ausdrücke bei der Verarbeitung von Ressourcen.
Vorgeschlagene Lösungen:
Ja, dem @ entkomm$
mit\$
(wie im Stacktrace vorgeschlagen) funktioniert, aber ich ändere die HTML-Datei lieber nicht, wenn andere Optionen verfügbar sind.Der Versuch, die Datei von den Prozessressourcen auszuschließen, führt zum Verschwinden des Problems, hat jedoch den Nebeneffekt, dass auch die Datei vom Kopieren ausgeschlossen wird:
configure(tasks.processResources) {
exclude 'static/dollar.html'
}
Ich habe auch gesehen, dass Sie verarbeitete Ressourcen filtern können. Ich denke, das ist, was ich tun möchte, aber ich habe keinen "$ -Filter ignorieren" gefunden, gibt es einen?
configure(tasks.processResources) {
filesMatching('static/dollar.html') {
filter = ???
}
}
Weitere Vorschläge?
Dasdollar.html
ie @ -Datei, die das Problem verursacht, kann vereinfacht werden zu:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div>Dollar <!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div>Dollar $</div>
</body>
lt;/div>
</body>