背景
在使用maven-assembly-plugin打包时,发现打包后文件中有部分中文出现乱码
解决
经过一番排查之后,发现是mvn编码的问题,window中mvn的默认编码是GBK
。可通过如下命令查看:
C:\Users\2>mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\upupfeng\installed\apache-maven-3.6.3\bin\..
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: D:\upupfeng\installed\jdk8\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
我们需要将编码修改为UTF-8。
有以下两种修改方式:
1. 修改mvn命令对应的脚本
我是window电脑,修改maven安装目录/bin/mvn.cmd
在mvn.cmd
中搜索-D
,在带-D
的行后添加一行:"-Dfile.encoding=UTF-8" ^
。如下所示:
"%JAVACMD%" ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %CLASSWORLDS_JAR% ^
"-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^
"-Dfile.encoding=UTF-8" ^
"-Dmaven.home=%MAVEN_HOME%" ^
"-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
2. 配置环境变量
mvn命令运行时会读取名为MAVEN_OPTS
的环境变量,可以通过配置环境变量解决。和配JAVA_HOME一样配一下就好了
变量:MAVEN_OPTS
值:-Dfile.encoding=UTF-8
修改完后,再次执行mvn -v
就可以看到编码变成UTF-8了,再次打包,中文就不会乱码了