如何構建多模組的SpringBoot專案

屌絲扎卡維發表於2019-05-13
  通過閱讀本文你將瞭解到:如何將已有SpringBoot專案改成多模組 & 如何新構建多模組SpringBoot專案 以下示例基於我正在使用的order(訂單服務)進行演示,無論你用的是什麼專案,原理都是一樣的,這裡不要糾結使用的是什麼服務。 

修改最外層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專案就已經告一段落了

 

相關文章