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