天天看點

使用maven時遇到的一個問題

學習maven時,嘗試将javaee項目分成兩個子產品,總項目為server-side,其下面有兩個子子產品:web-lib和web-apps,其中web-lib隻是儲存所有的依賴的并沒有任何的代碼邏輯,web-apps才是真正的web項目。另外web-lib和web-apps均繼承自server-side,web-apps依賴web-lib。其pom檔案如下:

server-side pom.xml

web-lib pom.xml

web-apps pom.xml

下面說一下今天遇到的問題,原來的項目是一個ssh項目,各種配置實用的xml檔案,我今天想嘗試實用annotation的方法配置,那麼首先我就需要把hibernate-annotataions添加到項目中,前面也說了我的web-lib項目是用來儲存所有的依賴的maven項目,所有就将該依賴添加到web-lib的pom項目下了,然後更改相關代碼。然後運作我的web-apps項目,就出現錯誤了。報出找不到類的錯誤

Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity
           

然後整個一下午都在糾結這個問題,搜尋了各種相關錯誤,各種百度谷歌,說是缺少一些jar包,但這些這些jar都在我項目裡啊,可以通過eclipse看到這些依賴包的,怎麼添加都報錯,我将生成的web項目展開,發現hibernate-annotations及其的所有依賴包根據就沒有添加在項目下,然後又各種頭腦風暴,最後突然靈光一閃,我應該将整個項目install一下。然後就在server-sides上運作了mvn install方法,再次運作我的項目,終于不再出現錯誤了。

後來仔細想了想出錯的原因,我的web-apps是依賴于web-lib的,然而maven依賴必須通過本地倉庫或遠端倉庫才能找到依賴,我修改了web-lib項目的依賴但我的本地倉庫仍是一樣安裝的web-lib項目,是以新添加的依賴會找不到。

[b]經過一下午的折磨,得出一個教訓,對于分子產品的maven項目,修改了項目的依賴等操作時一定要将這個項目install一下[/b]