修改最外層pom檔案
最外層pom檔案是用來管理其他子模組的父級pom,重點將<packaging>節點修改為pom,修改前<packaging>可能是jar或war
這裡修改成pom是因為打包時,父pom是依賴於子pom進行打包的,父pom會通過<modules>節點將所有的子pom模組引入並且進行管理
<packaging>pom</packaging>
建立多模組
假設你已經設計好子模組的拆分原則,這裡開始基於你自己的設計進行子模組的建立
例如:我將order專案拆分成三個不通的子模組,即common、client、server,每個模組負責的事情是不同的
第一步:右鍵專案名稱,選擇New->Module
第二步:在彈出的New Module視窗選擇Maven
第三步:點選Next,並輸入子模組的ArtifactId,如:common、client、server等,然後點選Next
第四步:檢查並確認子模組名稱及路徑是否正確,如果正確則點選Finish
至此,common模組就建立成功了,你會發現order根目錄下多了一個common子模組
轉移程式碼
建立了common模組後,如果有需要移動至common子模組下的程式碼,則根據原來的程式碼目錄結構,在common-src-main-java下建立相同的目錄結構即可
例如:我項將ProductInfoOutput移動到common子模組下,原來ProductInfoOutput的保路經為com.imooc.order.common,那麼我需要在common-src-main-java下建立com.imooc.order.common包,並將ProductInfoOutput拽進去
補充說明:我在建立com.imooc.order.common包時遇到了一個問題,就是右鍵java資料夾然後選New->Package並建立com.imooc.order.common時,建立出來的包路徑時沒有層次結構的,也就是說IDEA單純的為我建立了一個名為com.imooc.order.common的資料夾
經研究發現,是檢視的問題,將左上角的Project改成Project Files,然後按照上面的方式建立即可
在轉移test目錄下的程式碼時,同樣需要注意test目錄下的包結構要與轉移前的結構一致,這裡以server模組為例,因為common下的test目錄沒有程式碼
當我們建立好多有的子模組後,觀察最外層的父級pom檔案內容,發現父級pom已經將我們建立的子模組作為modules引入進來了
修改子模組pom檔案
當我們建立好多個子模組後,子模組間可能會存在依賴關係,例如我的server模組會依賴common模組下的ProductInfoOutput類
那麼我需要在server模組的pom檔案中將common模組引入
其他模組間的依賴引用同理
修改完子pom的依賴關係後,一定要重新整理pom檔案,不然依賴不會生效
配置打包外掛
SpringBoot專案一般都會打成jar包部署,所以需要在pom中引入spring-boot-maven-plugin的maven外掛
例如:我現在要打包order專案,此時我的SpringBoot執行主類在server模組下,那麼我就需要以server模組為主要的打包物件
因為打包時,maven外掛會去找SpringBoot的啟動類,如果沒有啟動類會打包失敗
那麼,此時我就需要在server模組的pom中增加spring-boot-maven-plugin的相關配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
注意:在最外層的父級pom中如果同樣存在spring-boot-maven-plugin的配置,記得一定要刪除掉
打包並執行服務
在maven視窗一次執行Lifecycle下的clean和install(如果你會maven命令,也可以用命令操作)
可以看到,這幾個模組都是SUCCESS,說明構建成功了
那我們要的可以執行的jar檔案在server模組的target目錄下,我們找到它
最後放到伺服器上執行這個jar包
使用命令:nohuo java -jar order-server-0.0.1-SNAPSHOT.jar > order.log 2>&1 &
可以看到,專案已經成功啟動了,埠號為預設的8080
至此,構建多模組的SpringBoot專案就已經告一段落了