問題現象:項目結構以下java
growup-serviceapi
| - - - - - -growup-apieclipse
| - - - - - -growup-coremaven
| - - - - - -growup-warui
經過maven打包後出現growup-core依賴本地工程growup-api,growup-war也依賴了本地工程growup-api,但growup-war依賴的是本地倉庫裏的growup-core,而不是本地工程的growup-core。這時war包引用的是本地倉庫裏打好core的jar包,所以調試war包引用到core的class文件了。spa
問題解決與定位:這裏其實應該是兩個問題,第一個問題是爲何依賴會出問題,依賴不了本地core子項目,第二個問題是怎麼解決調試war包時調到core包的java文件而不是編譯後的class文件。第二個問題是表象,咱們能夠經過添加源碼解決,這個辦法也適用於debug開源代碼。平常的項目中,咱們會導入一些依賴的開源jar包或者其餘項目jar包,但並不會把整個項目導入到eclipse中來,由於咱們只要引用而無需修改。可是調試的話會跳到被引用jar包裏的class文件,要麼是調試顯示不了代碼,要麼顯示的是class文件,格式怪異。爲了解決這兩個顯示問題,只須要把源碼導入到依賴路徑中便可。如上面的問題,我只須要右擊war包的項目 -> 點擊Build Path -> Configure Build Path -> Java Build Path -> 點開Maven Dependencies -> 找到被引用的牛奶瓶,即core項目的jar包 -> 點開左邊的箭頭 -> 點擊Source attchment -> 點Edit -> 選擇該jar包所對應的源碼包(這裏是我本地工程core項目) -> 點OK。debug
針對本問題,以上操做能夠解決debug跳轉到class文件顯示奇怪的問題,但實際上治標不治本。爲何這麼說呢?回到maven打包現象來,在打war包時core包是從倉庫裏下載的,說明它找不到本地項目,因此我特地去看了war包的pom文件:調試
<dependency> <groupId>cn.wlf.wulinfeng</groupId> <artifactId>growup-core</artifactId> <version>0.4.0-SNAPSHOT</version> </dependency>
而後我又看了core包的pom文件:code
<artifactId>growup-core</artifactId> <version>0.4.0</version> <packaging>jar</packaging>
從版本號能夠很明顯的看出,這是兩個core包。war包裏依賴了的growup-core-0.4.0-SNAPSHOT,而本地的core打出來的叫growup-core-0.4.0,固然沒法依賴了,因此它只能去倉庫裏下載growup-core-0.4.0-SNAPSHOT來依賴。上面解決第二個問題的作法其實是把war包裏依賴的growup-core-0.4.0-SNAPSHOT包的源碼包設置未本地項目的growup-core-0.4.0而已。blog
到這裏解決第一個問題的辦法一目瞭然:修改version一致,從新打包。