win10 下 mvn install 报错:编码GBK不可映射字符

问题背景

       由于jenkins需要部署不同的项目,需要使用不同的jdk版本,所以需要配置单独的settings.xml,使用指定的jdk版本进行编译,这里需要单独的maven设置,在配置完后进行mvn的install的时候,由于存在中文注释会报错GBK不可映射字符。

       刚开始笔者以为是mvn的默认编码是GBK造成的,在pom.xml文件配置了一堆encoding为utf-8的配置(完全按照maven官网配置),发现无论怎么配置都无效。

       后来笔者尝试使用cmd命令的javac来单独编译文件,发现原来是由于win10的jdk格式默认是GBK,导致无法编译,后来使用javac -encoding utf-8 Test.java来完成了编译。

      最终笔者在环境变量配置了UTF-8的编码来实现工程编译。

      在找不到错误的时候,笔者想到了最简单直接的javac编译来验证问题出在哪里。因为maven底层也是借助jdk的javac来实现编译,只不过它实现了自动化编译,但原理都是一样。 

      

解决办法

在maven指定使用不同的JDK编译

pom.xml配置:


  [...]
  
    [...]
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.11.0
        
          true
          true
          
          1.3
        
      
    
    [...]
  
  [...]

 为了避免硬编码,可以使用变量:

${JAVA_1_4_HOME}/bin/javac

maven的conf下的settings.xml文件配置 :


  [...]
  
    [...]
    
      compiler
        
          C:\Program Files\Java\j2sdk1.4.2_09
        
    
  
  [...]
  
    compiler
  

具体见官网: Apache Maven Compiler Plugin – Compiling Sources Using A Different JDK

设置maven编码UTF-8

mvn -version 默认是这样的

新建系统环境变量名为MAVEN_OPTS,值为 -Xms256m -Xmx512m -Dfile.encoding=UTF-8

设置JDK编码为UTF-8

 系统变量: 设置 JAVA_TOOL_OPTIONS 的值为 -Dfile.encoding=UTF-8

你可能感兴趣的:(java,开发语言)