Maven Resources Encoding
昨天临近release,却突然发现一个问题……
原本一个纯文本的字典文件,这个文件本身是UTF8编码,里边包含一些中文字符。无论上传到svn还是在本地使用maven build这个纯文本文件都没有任何问题。
但是我们的release必须要在另外一个公司内部的build系统上做,才可以进行下一步QA和Production安装。可偏偏用这个Build系统出来的这个字典文件变成了ASCII编码,里边的字符全都乱掉了。一开始怀疑是编译好文件在被Build系统下载时候动过手脚,经实验证明不是这个问题。
最后还是定位在了Maven身上。这个文件在被Maven打包的过程中仅仅是被拷贝到一个目录然后跟随这个目录一起被打进一个JAR,因为这个Build系统是在美国总部,所以经分析Build系统肯定是英文ISO-8859-1编码,Maven的拷贝也不是简单的拷贝,而是经过程序处理了。翻了一大堆的Maven说明,终于找到一个关于resources的配置,可以显式的指定resources的编码,加在pom.xml中就行了。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>