步驟過於詳細,多圖慎入!!!
假設一個場景,要開發一個4s店維修部的辦公系統,其功能有:前臺接待,維修搶單,財務結算,庫存管理。因而咱們建立一個項目balabalabala寫完交工。web
一段時間後,客戶提出,庫存管理出現了重大調整。因而咱們二次開發,寫好以後,告知客戶:「系統更新,全部部門暫停使用15分鐘、、、」。因而,客戶排隊,維修停工,結算暫停、、、店內一片慌亂。架構
又一段時間後,客戶提出,財務結算須要修改。因而咱們再次開發,寫好以後,告知客戶:「系統更新,全部部門暫停使用15分鐘、、、」。因而,客戶排隊,維修停工,倉庫休息、、、店內一片慌亂。框架
雙一段時間後,客戶提出、、、ide
叒一段時間後,客戶開始抱怨:「我只是調整某一個部門的業務,大家能不能不要把整個系統停掉,這樣損失太大了、、、」工具
因而你對每一個功能作一個系統,接待系統,維修系統,財務系統,庫存系統。四個系統應運而生;idea
叕一段時間後,客戶提出,你看登陸後這個位置啊,把個人名字寫到公司名字下面,還要把十幾個股東的資料展現出來,還有、、、spa
因而你帶着需求回去面對四個系統的相同功能修改、、、卒!3d
採用分模塊的方式構建項目就是將上例中用到的兩種方式結合在一塊兒,簡而言之就是將一個大的項目拆分紅小的模塊,各功能之間互不干擾又可實現共用基礎參數;code
以上述需求爲例,咱們在拆分之時,根據需求,將其分紅xml
父模塊
erp-common
erp-service
erp-service-impl
erp-web-reception
erp-web-finance
erp-web-fix
erp-web-repertory
構建分模塊項目的時候首先須要建立一個父級的模塊,全部的子模塊均繼承自父模塊。由於咱們總體架構採用SpringBoot構建,因此父模塊要建立爲SpringBoot項目
選擇Spring Initializr --> Next
填寫項目名稱,選擇JDK版本,其餘無需修改 --> Next
Group: 通常爲公司域名倒置
Artifact: 項目名
選擇SpringBoot版本,其餘無需勾選 --> Next
填寫項目名、項目地址 --> Finish
建立以後,項目結構以下,刪除以下選中部分文件
至此,父模塊建立完成,此時的pom文件以下,此pom便是下文所說的父pom文件
erp-common模塊咱們約定只存放實體類,工具類,常量類、異常類等一些共用且不須要交由Spring管理的類,所以建立的時候不須要它是一個SpringBoot項目,只須要建立爲傳統的Maven項目便可;
選中咱們的項目名Wayne-ERP,右鍵New --> Module
選擇Maven,以表示咱們建立的是一個Maven項目 --> Next
此處填寫的artifactId就是咱們的模塊名,建立該模塊時,若是第一步選中了父模塊,那麼此處GroupId和Version都會自動填充,若是沒有自動填充,說明建立該模塊的時候沒有選中Wayne-ERP --> Next
該模塊的名稱以及該模塊存放的位置,我通常在自動生成的名稱中間加個-
就拿來直接使用了 --> Finish
最下面的pom.xml便是父pom,父pom內容以下,增長了一個module子模塊
erp-common的pom文件以下,其中圈起部分爲本身添加內容,relativePath 指向父pom位置
至此,erp-common模塊建立完成,此時項目結構以下,
erp-service模塊咱們約定只存放service接口,所以也不須要交由Spring去管理,因此咱們也將其建立爲傳統的Maven項目,建立方式與erp-common相同,此處再也不贅述,若有不知道怎麼操做的同窗可私聊我或者發郵件給我
建立完成以後,此時父pom內容以下
erp-service的pom文件以下
erp-service-impl咱們約定存放service實現類,即業務層代碼,在Controller中須要用到自動注入,所以須要交由Spring管理,因此咱們將其建立爲SpringBoot項目。在建立Maven的子模塊與建立SpringBoot的子模塊有些差異,下面列出詳細步驟;
選中項目名Wayne-ERP,右鍵New --> Module,在彈出的頁面中選擇Spring Initializr --> Next
此處Group須要手動填寫,填好以後 --> Next
選擇SpringBoot版本,與建立父模塊時選擇版本要保持一致
點擊Next --> Finish
建立完成以後,須要在父pom中手動添加erp-service-impl子模塊,並刪除dependencies中的依賴
將erp-service-impl的pom文件中parent標籤,手動替換爲以下格式
此時項目結構以下,刪除以下選中部分文件,由於咱們程序的啓動入口在erp-web-*,因此在erp-service-impl中不須要main方法(SpringBoot是以Main方法啓動的
)
至此,erp-service-impl模塊建立完成,總體項目結構以下
此模塊便是咱們倉庫管理系統的打包入口,啓動入口,存放與倉管相關接口和頁面
建立方式與erp-service-impl類似,此處須要修改Package內容,此處包名錶示SpringBoot自動生成的main方法所在的位置,由於SpringBoot基於main方法啓動時,默認會自動掃描本包及本包下全部子包的內容,因此咱們將main方法向外提一層;
此處表示SpringBoot建立好以後,自動添加的依賴,咱們只選擇Web便可,代表這是一個Web項目,後續須要用到第三方框架,咱們再自行整合;
其他步驟與erp-service-impl類似,只是不須要刪除自動生成的文件,此時項目接口以下:
此時咱們還剩erp-web-reception、erp-web-finance、erp-web-fix沒有建立,這三個模塊與erp-web-repertory建立方式相同,此處就再也不贅述,只需注意命名問題便可;
完整項目結構:
各個模塊已經建立完成,還剩下的就是各個模塊之間的依賴關係了,各模塊之間應該怎麼依賴呢?具體的哪一個包又應該放在哪一個模塊下面的?我整理一張圖片供你們參考:
pom文件以下:
web模塊pom基本類似,都只引入erp-service-impl便可,在此只列舉一個
每一個web模塊對應一個main方法,啓動時找到各自的main方法,點擊啓動便可,idea通常會自動檢測SpringBoot程序入口,想跑哪一個點哪一個~~
另外一種模塊結構,感興趣的能夠發郵件與我;
常規佔位 (¬_¬)…