maven編譯外掛maven-compiler-plugin誤將WARNING當ERROR
【問題描述】
經常碰到這樣的問題,在eclipse中編譯是正常的,但是在maven編譯時不通過,錯誤資訊如下:
E:\workspace\*.java:[760,31] 警告:sun.misc.BASE64Encoder 是 Sun 的專用 API,可能會在未來版本中刪除
E:\workspace\*.java:[781,37] 警告:sun.misc.BASE64Decoder 是 Sun 的專用 API,可能會在未來版本中刪除
這明明是警告,怎麼maven編譯外掛就當它是錯誤呢?難道就不能忽略嗎?
【原因分析】
今天在對系統jdk版本從1.5升級到1.6時,終於明白是怎麼回事了。我們知道,Maven是用maven-compiler-plugin執行編譯工作的,通過呼叫javac完成編譯,該外掛的作者工作環境都是英文,所以忽略了javac輸出的“WARNING”關鍵字。而當本地環境是中文時,javac輸出的是中文,這樣該外掛沒有匹配成“WARNING”,就當錯誤處理了,中斷編譯。
【解決辦法】
只需升級該外掛版本到2.3.2
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>在這版本出來之前還有其他解決方法,但外掛升級解決了最根本的問題,也是最簡單的!