2014年8月13日 星期三

Eclipse中解決Maven專案內pom.xml檔出現“Plugin execution not covered by lifecycle configuration”錯誤的問題

先前我的Maven專案開發環境都是在Windows上的Java EE版Eclipse Kepler下,

Java EE的好處是幫你整合了很多開發專案時會用到的外掛,

包含了EGit和M2E,

最近因為筆電重灌成Ubuntu,所以開發環境要重新建置,

因為一些原因安裝了Eclipse Juno,然後將之前的專案從GitHub上重新拉下來,

誰知,原本好端端的專案,拉下來怎麽就動不了了……

花了許多時間追查原因,以及跟原本可用的工作環境交叉比對後,終於得出結論,


首先觀察到的是Markers的View裡面回報了大量的Error導致專案無法建置,

但這些錯誤幾乎都是XXX cannot be resolved to a type,

這訊息往往代表import的某某class找不到,

再仔細一看,這些class都是要透過Maven的Dependency設定取得的,

也就是說,Maven Build的某個地方出錯失敗了,

再回到Markers看一下,pom.xml檔案有四個Error,

訊息是"Plugin execution not covered by lifecycle configuration",

由於怎麼看都不像pom.xml檔寫錯了什麼,

畢竟同一份檔案在別的地方是可以正常運作的,

因此轉向環境設定的方向追查,

終於讓我找到了錯誤發生的地方,在 Project → Properties 裡有個Maven的分類,

裡面有個 Lifecycle Mapping子項目,打開來畫面如下


原來四個Error是從這邊冒出來的,

那麼為什麼這邊會失敗呢?仔細比對後才終於發現,

吼!原來是Eclipse Juno的Java EE版本內沒有內建M2E的外掛,

剛下載好時的預設功能如下圖


發現的時候真是差點吐血昏倒,原來M2E是從Kepler以上的版本才有內建的,

難怪之前用Kepler的時候都沒問題,

知道問題後就好辦了,只要到Eclipse Marketplace裡面搜尋

"Maven Integration For Eclipse" 再配合對應的Eclipse版本安裝,就可以了,

安裝好後就可發現About Eclipse裡多了一個M2E的小icon在最右邊,


這時再回去Properties裡面看,果然就正常了,


此時pom.xml檔裡的Error也自然消失,

專案就可以順利Build完使用了。



結論:

"Plugin execution not covered by lifecycle configuration" 這個錯誤發生的情況有很多種,

光Google上搜尋就好多解法,適用的情況也不一樣,

我的狀況是用在Eclipse為正確安裝M2E的情況下的解決方法,

要確認是否是此問題最快的方法就是打開 Help → About Eclipse

看看是否有M2E的標誌,

沒有的話就趕快重新安裝一下,就解決囉!

沒有留言:

張貼留言