如何在包含字符的文件上执行gradle processResources,而不转义文件中的字符?
我有一些静态html文件,位于Spring Boot参考文档建议的“资源/静态”文件夹中。然而,当我尝试执行gradle processResources时,gradle抛出了一个异常
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>
据我所知,出现此问题的原因是,其中一个静态文件中有一个字符,并且在处理资源时,它是表达式的保留字符。
建议的解决方案:
>
configure(tasks.processResources) {
exclude 'static/dollar.html'
}
我还看到,您可以过滤已处理的资源。我想这就是我想做的,但我还没有找到“忽略$过滤器”,有吗?
configure(tasks.processResources) {
filesMatching('static/dollar.html') {
filter = ???
}
}
其他建议?
美元。导致问题的html文件可以简化为:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div>Dollar $</div>
</body>
仅供将来参考:
您也可以将$写成超文本标记语言实体:
JB Nizet的评论提供了宝贵的见解。这个问题确实是由于使用了expand(扩展)(虽然由于它位于父项目中的allProjects()脚本中,所以无法立即看到)。首先添加的原因是希望填充信息。构建。*应用程序中的属性。属性(以便通过Spring Boot的infoendpoint提供)。
解决方案:使用filesMatch()
仅扩展()
选定的文件。以下片段解决了与Spring Boot相关的具体问题:
processResources {
filesMatching('application.properties') {
expand(project.properties)
}
}
SSI 指令为用户提供在 Web 服务器处理之前将一个文件的内容插入到另一个文件的方法。ASP 只使用这一机制的 #include 指令。要在 .asp 文件中插入一个文件,使用下面的语法: <!--#include virtual | file ="filename"--> virtual 和 file 关键字指示用来包含该文件的路径的类型,filename 是您想包含的文件的路径和名称。 被包
文件包含 可以使用source和.关键字,如: source ./function.sh . ./function.sh 在bash里,source和.是等效的,他们都是读入function.sh的内容并执行其内容(类似PHP里的include),为了更好的可移植性,推荐使用第二种写法。 包含一个文件和执行一个文件一样,也要写这个文件的路径,不能光写文件名,比如上述例子中: . ./functio
include 标签是模板开发中最最常用的标签之一,它可以在模板中包含其它模板的内容;用法如下: <include file='模版1,模版2,...' /> 请不要在include 的模板文件中使用模板布局或者模板继承 file 属性的定义规则: 以前台simlpeboot3主题为例: 控制器/操作 <include file="public/header" /> <!-- 以上表示包含当前
tc_include tc_include是前台模板包含文件的方法,用于替换原来的include的标签,实现更多功能 用法: <tc_include file="Public:nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_include file="Public/nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_inclu
include 标签是模板开发中最最常用的标签之一,它可以在模板中包含其它模板的内容;用法如下: <include file='模版1,模版2,...' /> 请不要在include 的模板文件中使用模板布局或者模板继承 file 属性的定义规则: 以前台simlpeboot3主题为例: 控制器/操作 <include file="public/header" /> <!-- 以上表示包含当前
在当前模版文件中包含其他的模版文件使用include标签,标签用法: {include file='模版文件1,模版文件2,...' /} 包含的模板文件中不能再使用模板布局或者模板继承。 使用模版表达式 模版表达式的定义规则为:模块@控制器/操作 例如: {include file="public/header" /} // 包含头部模版header {include file="public/