項目開發中Maven的單向依賴-2022新項目
- 2022 年 7 月 28 日
- 筆記
- 開發工具-Git-maven-IDEA等的使用
一、業務場景
工作多年,在真實的項目開發中經常會遇到將一個項目拆分成多個工程的情況,比如將一個真實的項目拆分成controller層,service層,
dao層,common公共服務層等等。這樣拆分比較有利於分清各自所屬層需要做的事情,也非常便於管理個層次之間的代碼,職責比較清晰。各
個層次之間也會相互依賴,比如controller層需要依賴common層,則直接引入;service層需要引入common層也直接引入;dao層也是同理。
這種處理方式也沒什麼問題,整個項目依然能夠順利的跑起來,可是有沒有什麼更加好的方式來處理這些依賴關係呢?
二、需求分析
新項目中是按照分層架構來設計、搭建的,使用cola4.0的設計理念進行分層,主要分為start-啟動層,只有一個啟動類;adapter-適配層,
類似於controller層;app層,類似於service層;domain層表示領域層,提供領域服務,使用DDD的設計理念;Infrastructure基礎設施服務層,提供
數據庫操作服務。項目在原有的這些基礎之上,新加了一層common,抽取一些公共的服務類,如返回數據的枚舉值,統一異常處理,自定義異常等
等。這樣算下來層次就比較多。總共有6層,除了start層之外,其他層都需要依賴common層在項目內部提供的服務。如果按照以前的處理方式,
每一層都單獨引入common層,pom文件裏面需要加的內容也比較多。那如何解決這個問題呢,一種可行的方案就是使用maven的依賴傳遞。
三、解決方案
假如項目中有依賴關係A–>B–>C–>D,A依賴B,B依賴C,依此類推,則A就可以間接的依賴項目D,這就是Maven中的依賴傳遞。根據這一特性
對上面的項目進行依賴層次的改進為:start–>adapter–>app–>infrastructrue–>domain–>common。從之前的每個工程中都需要引入common層,改為
現在只需要domain層去依賴common層,並且其他項目也能夠正常使用。這種單項依賴讓工程之間的關係變得更加的清晰,說得直白通俗一點就是上層
只依賴下層。這種處理方式也大大地簡化了pom文件中的內容,只需要在某個工程裏面引入其需要依賴的下層項目的坐標即可。經過測試,這種處理方式
完全可行,現在項目中也已經真正的使用起來,在今後的項目開發中,自己也一定會繼續採用這種方式來處理項目之間的依賴關係。如果各位小夥伴有更好
的建議,歡迎留言。
參考文章:
//blog.csdn.net/significantfrank/article/details/110934799
//www.cnblogs.com/cy0628/p/15034450.html