第二十三章:SpringBoot專案多模組打包與部署

恆宇少年發表於2017-11-15

我們接上章節內容繼續,上一章我們已經完成了多模組專案的建立以及執行,那我們線上環境該如何打包部署呢?

本章目標

打包部署SpringBoot多模組專案到外部執行Tomcat容器中。

構建專案

我們直接複製一份上一章的程式碼,如下圖1所示:

第二十三章:SpringBoot專案多模組打包與部署
圖1


上圖1 我們複製了chapter22專案原始碼,並且修改每個模組的pom.xml配置檔案內的artifactId為chapter23。

Maven Install

我們如果現在直接執行pager子模組專案打包命令(maven package)maven會給我們提示沒有找到所需要的user.jar因為我們的pager模組專案的pom.xml配置檔案內引入了com.yuqiyu.user模組,如下圖2所示

第二十三章:SpringBoot專案多模組打包與部署
圖2


在IDEA工具中給我們maven專案預設提供了常用到的命令我們直接使用就可以了,在專案的右側有一個Maven Projects,如下圖3所示:

第二十三章:SpringBoot專案多模組打包與部署
圖3


點選紅色框焦點就會出現上圖3所示的內容,展開任意一個Maven模組下都會存在三個模組Lifecycle(常用到的命令)、Plugins(外掛)、Dependencies(專案部署所依賴的包列表)。

我們打包時一定要注意要從完全被依賴的專案開始

Bean Module Maven Install

因為我們的bean子專案是完全被依賴的,所以我們先從這個專案開始,點開Maven Projects後我們找到bean專案,展開Lifecycle選擇 install命令雙擊開始執行打包,當我們執行maven install命令時會直接將我們工作空間內的專案直接生成jar包並且新增到本地maven倉庫,這樣我們在專案中就可以直接依賴使用,雙擊install命令後檢視控制檯輸出日誌,如下圖4所示:

第二十三章:SpringBoot專案多模組打包與部署
圖4


可以看到我們的控制檯已經輸出了打包成功的日誌,那我們直接去本地maven倉庫檢視是否已經存在,如下圖5所示:

第二十三章:SpringBoot專案多模組打包與部署
圖5


可以看到已經在我們本地maven倉庫存在,這樣我們user模組就可以執行下面的打包操作,因為步驟一樣我這裡就不做一一解釋了,同樣的方式打包user專案(注意:所有被依賴都打包完成後才可以打包依賴專案)。

Pager Module Maven Package

所有的jar包依賴都執行打包完成後,我們開始進行pager專案的打包,因為我們的pager專案是一個web專案,我們只是需要生成後的war包部署到外部容器而已所以我們需要換一個命令package(打包到target目錄下,並不會新增到maven倉庫)

執行package命令後檢視控制檯日誌輸出,如下圖6所示:

第二十三章:SpringBoot專案多模組打包與部署
圖6


我們可以看到控制檯輸出我們打包成功的日誌,我們可以去target目錄下檢視已經有一個pager-1.0.0.war,打包的名稱可以通過新增finalName引數修改,如下圖7所示:

第二十三章:SpringBoot專案多模組打包與部署
圖7


先來執行clean命令後再執行package命令,這時target就會有一個pager.war存在。

統一打包方式

我們上面講的是分步打包,我們完成可以在chapter23這個專案中執行maven package命令,這樣所有的子模組以及父模組都會參與打包並且在在target目錄下生成對應模組的jar或者war

點選Maven Projects選擇chapter23執行命令clean,你就會發現所有專案的target目錄都會被刪除,下面我們來執行package命令檢視效果如下圖8所示:

第二十三章:SpringBoot專案多模組打包與部署
圖8


在控制檯輸出的內容與我們之前有所差異,我們在chapter23執行的package命令後maven會把chapter23本身以及所有的子模組專案都執行一遍package命令,並且你不需要考慮依賴問題,maven會自動去處理。

pager.war生成後複製到tomcat目錄下的webapps內,執行tomcat訪問就可以了,跟我們普通專案沒有區別。

總結

以上內容就是本章的全部講解,本章主要講解了基於SpringBoot框架建立的多模組專案如何使用兩種方式進行打包部署,當然建議使用第二種方式比較方便快捷不需要考慮依賴問題。

本章內容已經上傳到碼雲

SpringBoot配套原始碼地址:gitee.com/hengboy/spr…

SpringCloud配套原始碼地址:gitee.com/hengboy/spr…

SpringBoot相關係列文章請訪問:目錄:SpringBoot學習目錄

QueryDSL相關係列文章請訪問:QueryDSL通用查詢框架學習目錄

SpringDataJPA相關係列文章請訪問:目錄:SpringDataJPA學習目錄

SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!

歡迎加入QQ技術交流群,共同進步。

第二十三章:SpringBoot專案多模組打包與部署
QQ技術交流群


相關文章