Idea中SpringBoot多模塊項目的建立實現(xiàn)
What
內(nèi)含一個或多個maven模塊的SpringBoot項目稱為SpringBoot多模塊項目
Why
便于維護(hù) 將一個大的單體項目分成多個子模塊有利于模塊間的維護(hù), 刪除或移動單個模塊時對其他模塊的影響也比較小 單個模塊還可以復(fù)用
共享依賴 只需要在父類中定義公共的依賴項,子類模塊都會共享父類的依賴項 在大型項目中會使得代碼更容易簡潔。
How
1.父模塊
創(chuàng)建父項目(SpringBoot)
刪除不需要的目錄
去除src .mvn mvnw mvnw.cmd 文件
pom
packaging標(biāo)簽 打包方式改為"pom", 表示這個模塊是 聚合模塊 把子類模塊都"聚合"起來 使用maven打包,可以從這個模塊開始,會自動計算打包順序
<packaging>pom</packaging>
dependencies與dependencyManagement標(biāo)簽
1. dependencies將依賴放入標(biāo)簽中 子模塊會自動引入父類的的依賴
2. dependencyManagement將依賴放入標(biāo)簽中 子模塊 不會 自動引入父類的的依賴 還需要在子類中聲明一次依賴 GAV中 不需要 聲明version標(biāo)簽,version同父類中的一致
父類pom文件demo
<!-- 父類: springboot自帶的啟動類父類--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 創(chuàng)建時填寫的基本信息--> <groupId>com.ybj</groupId> <artifactId>my-app</artifactId> <version>0.0.1-SNAPSHOT</version> <name>my-app</name> <description>springboot多項目</description> <!-- 父類的packing只能是pom--> <packaging>pom</packaging> <!-- 子類直接繼承--> <dependencies> <!-- 子類需要在pom中 手動加入依賴(version不用寫)--> <dependencyManagement>
modules標(biāo)簽 這個標(biāo)簽管理的是被聚合的模塊 當(dāng)新建子模塊時,modules會自動添加單個的module標(biāo)簽
啟動類
父模塊啟動類,是整個模塊的啟動類 所有的請求都走父模塊的端口 為了使子模塊的服務(wù)也能啟動,需要在父模塊啟動類上加入注解
@ComponentScan(basePackages = {"com.ybj.*",})
2.子模塊
1.創(chuàng)建子模塊
選擇Module
選擇maven項目
輸入具體信息
2.pom
packaging標(biāo)簽 這里可以選擇jar或者war 指定打包方式
parent 子類pom中的parent自動指向了父類的GAV 子類會自動引入父類pom中 dependencies 的中依賴項
<!-- 父類:自動選擇了父類--> <parent> <artifactId>my-app</artifactId> <groupId>com.ybj</groupId> <version>0.0.1-SNAPSHOT</version> </parent>
模塊間依賴 需要依賴某個模塊,可以在pom中聲明 這里的依賴是從本地倉庫下載的,不是遠(yuǎn)程倉庫
Maven Helper插件 在idea中安裝maven helper插件 點擊pom文件,選擇 Dependency Analyzer
即可查看并搜索依賴項,這對于解決依賴沖突很有幫助
4.打包
方式1:聚合模塊直接打包
在聚合模塊打包,會自動計算依賴順序,依次打包
依次執(zhí)行 clean 與 install maven會自動計算構(gòu)建順序
方式2:使用插件
方式1的問題就是耗費時間長, 因為是全部打包, 所以就需要實現(xiàn)單個模塊打包 這里需要借助spring-boot-maven-plugin插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.0.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
5. 常見問題
依賴沖突
因為子類會繼承父類的依賴項,所以可能 導(dǎo)致依賴沖突,從而使項目無法啟動。 這里可以使用maven helper插件進(jìn)行沖突的排查
到此這篇關(guān)于Idea中SpringBoot多模塊項目的建立實現(xiàn)的文章就介紹到這了,更多相關(guān)Idea中SpringBoot多模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot多模塊包掃描問題的解決方法
- SpringBoot創(chuàng)建多模塊項目的全過程記錄
- springboot多模塊多環(huán)境配置文件問題(動態(tài)配置生產(chǎn)和開發(fā)環(huán)境)
- SpringBoot集成mqtt的多模塊項目配置詳解
- springboot實現(xiàn)多模塊項目添加一新模塊
- IDEA搭建SpringBoot多模塊聚合工程過程詳解(多模塊聚合工程)
- springboot實現(xiàn)maven多模塊和打包部署
- springboot結(jié)合maven實現(xiàn)多模塊打包
- Springboot 多module打包方案示例詳解
- springboot項目父子多模塊打包方式
- SpringBoot多模塊搭建的實現(xiàn)示例
相關(guān)文章
通過AOP攔截Spring?Boot日志并將其存入數(shù)據(jù)庫功能實現(xiàn)
本文介紹了如何使用Spring Boot和AOP技術(shù)實現(xiàn)攔截系統(tǒng)日志并保存到數(shù)據(jù)庫中的功能,包括配置數(shù)據(jù)庫連接、定義日志實體類、定義日志攔截器、使用AOP攔截日志并保存到數(shù)據(jù)庫中等步驟,感興趣的朋友一起看看吧2023-08-08關(guān)于ApplicationContext的三個常用實現(xiàn)類
這篇文章主要介紹了關(guān)于ApplicationContext的三個常用實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06基于surging跨網(wǎng)關(guān)跨語言進(jìn)行緩存降級的問題小結(jié)
surging是一款開源的微服務(wù)引擎,包含了rpc服務(wù)治理,中間件,以及多種外部協(xié)議來解決各個行業(yè)的業(yè)務(wù)問題,這篇文章主要介紹了如何基于surging跨網(wǎng)關(guān)跨語言進(jìn)行緩存降級,需要的朋友可以參考下2024-05-05支付寶開發(fā)平臺之第三方授權(quán)登錄與獲取用戶信息
本文主要介紹了第三方授權(quán)登錄與獲取用戶信息的實例方法,具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03SpringBoot集成iText實現(xiàn)電子簽章功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何集成iText實現(xiàn)電子簽章功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10Java中Cookie和Session詳解及區(qū)別總結(jié)
這篇文章主要介紹了Java中Cookie和Session詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06