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