我的机器环境:
Windows vista 英文版;
JDK 1.6;
Maven 2.2
昨天以前用mavan编译项目基本没有任何错误和警告信息,release目录下面总是能编译出最新的包。但是昨天为了安装一个blackberry的桌面间辅助工具winloader,我将系统的语言环境给改成可以支持中文了,这在我上一篇文章有介绍(英文版vista,中文软件乱码 )。
从这以后编译项目总是抛出:
[WARNING] /ejigshn_view/ecds4.2_pc_stc/mtv_v_bric/design/bric-common-jar/src/mai
n/java/com/ericsson/mtv/bric/common/BricUtil.java:[237,16] 警告:sun.misc.BASE64
Encoder 是 Sun 的专用 API,可能会在未来版本中删除
[WARNING] /ejigshn_view/ecds4.2_pc_stc/mtv_v_bric/design/bric-common-jar/src/mai
n/java/com/ericsson/mtv/bric/common/BricUtil.java:[237,49] 警告:sun.misc.BASE64
Encoder 是 Sun 的专用 API,可能会在未来版本中删除
这样的警告信息,而且正是由于这些警告导致了项目最终编译失败,release目录下没有编译出新包。
原因分析:
1. maven 对中文支持不好,英文环境下能发现警告信息中的关键字符,然后编译时会忽略这些警告(虽然警告信息也会打印出来,但是不影响编译结果),而中文时maven识别不了中文里的关键字,自然不会忽略这些警告,权当错误处理。
2. 我原来操作系统的本地语言都是英文的,现在改成可以支持中文了,所以才会出现这样的编译问题,换句话说,如果你是完完全全的英文操作系统,maven编译时就不会因警告导致编译不通过的情况出现。
解决方案:
1. 方案一 (我机器上没能实验成功,比较麻烦,jdk的依赖不好配置 )
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<compilerArguments>
<verbose />
<bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
2. 方案二(我机器上没试验成功,也许是环境不同 )
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
3. 方案三(推荐,我机器上实验成功 )
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>