如何將maven項目劃分為多個模塊
多模塊拆分的必要性
使用Java技術開發(fā)的工程項目,無論是數據處理系統(tǒng)還是Web網站,隨著項目的不斷發(fā)展,需求的不斷細化與添加,工程項目中的代碼越來越多,包結構也越來越復雜這時候工程的進展就會遇到各種問題:
(1)不同方面的代碼之間相互耦合,這時候一系統(tǒng)出現問題很難定位到問題的出現原因,即使定位到問題也很難修正問題,可能在修正問題的時候引入更多的問題。
(2)多方面的代碼集中在一個整體結構中,新入的開發(fā)者很難對整體項目有直觀的感受,增加了新手介入開發(fā)的成本,需要有一個熟悉整個項目的開發(fā)者維護整個項目的結構(通常在項目較大且開發(fā)時間較長時這是很難做到的)。
(3)開發(fā)者對自己或者他人負責的代碼邊界很模糊,這是復雜項目中最容易遇到的,導致的結果就是開發(fā)者很容易修改了他人負責的代碼且代碼負責人還不知道,責任追蹤很麻煩。
將一個復雜項目拆分成多個模塊是解決上述問題的一個重要方法,多模塊的劃分可以降低代碼之間的耦合性(從類級別的耦合提升到jar包級別的耦合),每個模塊都可以是自解釋的(通過模塊名或者模塊文檔),模塊還規(guī)范了代碼邊界的劃分,開發(fā)者很容易通過模塊確定自己所負責的內容。
將原來product項目拆分為如下3個模塊
- product-server //所有的業(yè)務邏輯
- product-client //對外暴露的接口
- product-common //公用的對象
1、在原有的項目上右擊,New->Module
2、選擇Maven選項,archetype可以不選擇,直接next
3、填寫對應的GroupId和ArtifactId即可,一直next,一直到finish
如果發(fā)現創(chuàng)建好的maven項目不能新增class文件,可以在對應的文件夾上右鍵,將其添加為Sources Root即可;
4、查看外層pom文件
新增完所有的模塊之后,在最外層的pom文件會自動將其引入進來
5、版本管理
可以在properties中設置版本管理,方便以后升級之后的改動
6、項目依賴
在微服務中,當前項目很有可能依賴于其他服務的公用項目,這就需要我們先將其他其他服務的公用項目進行打包,并且先放在我們的maven的本地倉庫,這樣當前項目才可以進行依賴,打包前,需要在公用的項目中輸入如下命令:mvn -Dmaven.test.skip=true -U clean install
(①-Dmaven.test.skip=true跳過測試用例;②-U為強制刷新;③clean清除原有target產生的jar包;④install將其打包放到本地的maven倉庫)
打包完成之后IDEA控制臺顯示如下:
在本地倉庫顯示如下:
7、修改完項目結構圖
8、理解maven命令package、install、deploy的聯(lián)系與區(qū)別
mvn clean package依次執(zhí)行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7個階段。
mvn clean install依次執(zhí)行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8個階段。
mvn clean deploy依次執(zhí)行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9個階段。
由上面的分析可知主要區(qū)別如下,
package命令完成了項目編譯、單元測試、打包功能,但沒有把打好的可執(zhí)行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
install命令完成了項目編譯、單元測試、打包功能,同時把打好的可執(zhí)行jar包(war包或其它形式的包)布署到本地maven倉庫,但沒有布署到遠程maven私服倉庫
deploy命令完成了項目編譯、單元測試、打包功能,同時把打好的可執(zhí)行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java中的ArrayList和contains函數和擴容機制(源碼詳解)
這篇文章主要介紹了Java中的ArrayList和contains函數和擴容機制,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-10-10mybaties plus實體類設置typeHandler不生效的解決
這篇文章主要介紹了mybaties plus實體類設置typeHandler不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08