先前我的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的標誌,
沒有的話就趕快重新安裝一下,就解決囉!
沒有留言:
張貼留言