1. 程式人生 > >maven編譯外掛maven-compiler-plugin誤將WARNING當ERROR

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>

在這版本出來之前還有其他解決方法,但外掛升級解決了最根本的問題,也是最簡單的!