gradle version: 3.0
昨天使用 Gradle 为测试环境打包时,使用测试环境的配置信息,替换系统配置文件后,发现配置文件中的中文注释,编程乱码了,导致发布到测试环境后,jetty 报 3 字节的 UTF-8 序列的字节 3 无效 的错误。这里简单介绍一下错误原因和解决方案。
问题背景
src/main/resources/log4j2.xml 部分内容:1
2
3
4
5
6...
<Properties>
<!-- 项目名称 -->
<Property name="project.name">@project.name@</Property>
</Properties>
...
build.gradle 部分内容:1
2
3
4
5
6processResources {
// src/main/resources 下的文件中 @key@ 的内容使用 config.groovy 里对应的进行替换
from(sourceSets.main.resources.srcDirs) {
filter(ReplaceTokens, tokens: configuration.toProperties())
}
}
上面 processResources 方法会导致 log4j2.xml 中的中文注释乱码,最终导致启动报错。
解决方案
解决这个问题并不困难,直接在 processResources 方法添加一行 filteringCharset = 'UTF-8' 即可,最终的 processResource:1
2
3
4
5
6
7processResources {
// src/main/resources 下的文件中 @key@ 的内容使用 config.groovy 里对应的进行替换
filteringCharset = 'UTF-8'
from(sourceSets.main.resources.srcDirs) {
filter(ReplaceTokens, tokens: configuration.toProperties())
}
}