我們接上章節內容繼續,上一章我們已經完成了多模組專案的建立以及執行,那我們線上環境該如何打包部署呢?
本章目標
打包部署SpringBoot多模組專案到外部執行Tomcat容器中。
構建專案
我們直接複製一份上一章的程式碼,如下圖1所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/407fa5b87ad842ad85c86069b70141f4b4a22318c2da353ec577eb430ad3136f.png)
上圖1 我們複製了chapter22專案原始碼,並且修改每個模組的pom.xml配置檔案內的artifactId為chapter23。
Maven Install
我們如果現在直接執行pager子模組專案打包命令(maven package)maven會給我們提示沒有找到所需要的user.jar因為我們的pager模組專案的pom.xml配置檔案內引入了com.yuqiyu.user模組,如下圖2所示
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/534bc0a49c540ff7509f9e18314bc0f37a3bed744344a27dabc1071538ba0271.png)
在IDEA工具中給我們maven專案預設提供了常用到的命令我們直接使用就可以了,在專案的右側有一個Maven Projects,如下圖3所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/1956f37b28718c433535363ba115e124730e3565d0a5778c47311efb53dbd51a.png)
點選紅色框焦點就會出現上圖3所示的內容,展開任意一個Maven模組下都會存在三個模組Lifecycle(常用到的命令)、Plugins(外掛)、Dependencies(專案部署所依賴的包列表)。
我們打包時一定要注意要從完全被依賴的專案開始
Bean Module Maven Install
因為我們的bean子專案是完全被依賴的,所以我們先從這個專案開始,點開Maven Projects後我們找到bean專案,展開Lifecycle選擇 install命令雙擊開始執行打包,當我們執行maven install命令時會直接將我們工作空間內的專案直接生成jar包並且新增到本地maven倉庫,這樣我們在專案中就可以直接依賴使用,雙擊install命令後檢視控制檯輸出日誌,如下圖4所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/5fe6e9645c65e554a227a820878d3b29b05ac4a4a21720dfa57ca4011a5329b7.png)
可以看到我們的控制檯已經輸出了打包成功的日誌,那我們直接去本地maven倉庫檢視是否已經存在,如下圖5所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/c45088c027e1465315576270c0620fcb3f5a446d8bf475442a3c588cf3c13834.png)
可以看到已經在我們本地maven倉庫存在,這樣我們user模組就可以執行下面的打包操作,因為步驟一樣我這裡就不做一一解釋了,同樣的方式打包user專案(注意:所有被依賴都打包完成後才可以打包依賴專案)。
Pager Module Maven Package
所有的jar包依賴都執行打包完成後,我們開始進行pager專案的打包,因為我們的pager專案是一個web專案,我們只是需要生成後的war包部署到外部容器而已所以我們需要換一個命令package(打包到target目錄下,並不會新增到maven倉庫)
執行package命令後檢視控制檯日誌輸出,如下圖6所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/7bc614c6e5a4210dc7c49e2d581c02ea308a00522dc0cda3d49bb31a4c1a1875.png)
我們可以看到控制檯輸出我們打包成功的日誌,我們可以去target目錄下檢視已經有一個pager-1.0.0.war,打包的名稱可以通過新增finalName引數修改,如下圖7所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/47feebab55d2b30520ea7ee15e9f018da159ab552fbcf6649ad7c33070ba0129.png)
先來執行clean命令後再執行package命令,這時target就會有一個pager.war存在。
統一打包方式
我們上面講的是分步打包,我們完成可以在chapter23這個專案中執行maven package命令,這樣所有的子模組以及父模組都會參與打包並且在在target目錄下生成對應模組的jar或者war
點選Maven Projects選擇chapter23執行命令clean,你就會發現所有專案的target目錄都會被刪除,下面我們來執行package命令檢視效果如下圖8所示:
![第二十三章:SpringBoot專案多模組打包與部署](https://i.iter01.com/images/7bc8d58863d4ae30c6bf4105f1e33a4bb5b547b6dec991534b0d78fc5cd4cb53.png)
在控制檯輸出的內容與我們之前有所差異,我們在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專案多模組打包與部署](https://i.iter01.com/images/1dda44faae7f1b06555116584e8266641eb41a805696248681ef750f482dfbb6.png)