Maven使用FAQ:与Maven版本和字符集编码有关的编译错误处理

在Maven3.0下创建了一个POM文件,可对项目进行正常的构建,但版本改为Maven2.2.1时却出现类似如下的编译错误: 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Compilation failure 

D:\workspace\rbdp\src\main\java\com\util\Test.java:[20,49] 需要 '}' 

D:\workspace\rbdp\src\main\java\com\util\Test.java:[20,50] 非法字符: \65533 

D:\workspace\rbdp\src\main\java\com\util\Test.java:[20,51] 需要 <标识符> 

D:\workspace\rbdp\src\main\java\com\util\Test.java:[20,52] 需要 ';' 
… 

该错误显然跟字符集编码有关,但POM文件中已指定了编码为UTF-8,在POM文件中包含如下内容: 
?  
????? UTF-8 
?

经反复试验和分析,发现这跟Maven版本有关。Maven3和Maven2版本变化不小,不完全兼容。

?

具体解决方法说明如下:??
?在确认POM文件中已有上述内容的前提下,增加以下内容(如已包含maven-compiler-plugin的相关内容,则只需在相应位置增加红色字体部分内容):

? ?
???  
?????  
??????? org.apache.maven.plugins 
??????? maven-compiler-plugin 
???????  
? 1.5 
? 1.5 
UTF-8 
???????
 
?????
 
???
????
?

?

? 注意: 
??? 1、同时指定属性和方式可适用于Maven2和Maven3。

??? 2、在Maven3中可以只增加属性而不指定即能解决编译问题。如果只指定编译不会出错,但会出现以下警告。建议两者都进行指定或只指定前者。警告信息如下:
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!

??? 3、在Maven2中,如果只指定属性则编译出错;如果只指定编译不会出错,但会出现与第2点类似的警告,建议两者都进行指定,以免对运行产生影响。

 

你可能感兴趣的:(问题及解决方法)