Gradle processResources - файл содержит символ $
Как вы можете выполнитьgradle processResources
на файлы, которые содержат$
персонажи без побега$
в файлах?
У меня есть некоторые статические HTML-файлы, расположенные/resources/static
папка в соответствии с предложениемSpring Boot справочные документы, Тем не менее, когда я пытаюсь выполнитьgradle processResources
Градл бросает исключение
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>
Насколько я понимаю, проблема возникает из-за$
символ в одном из статических файлов и$
является зарезервированным символом для выражений при обработке ресурсов.
Предлагаемые решения:
Да, избегая$
с\$
(как предложено в stacktrace) работает, но я скорее не изменяю html-файл, если доступны другие опции.Попытка исключения файла из ресурсов процесса приводит к исчезновению проблемы, но побочным эффектом также является исключение файла из копии:
configure(tasks.processResources) {
exclude 'static/dollar.html'
}
Я также видел, что вы можете фильтровать обработанные ресурсы. Я думаю, что это то, что я хотел бы сделать, но я не нашел "игнорировать $ фильтр", есть ли?
configure(tasks.processResources) {
filesMatching('static/dollar.html') {
filter = ???
}
}
Другие предложения?
dollar.html
Файл, вызывающий проблему, можно упростить до:
<!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>