一文帶你搞懂Maven的繼承與聚合
一、繼承
我們已經(jīng)完成了使用聚合工程去管理項(xiàng)目,聚合工程進(jìn)行某一個(gè)構(gòu)建操作,其他被其管理的項(xiàng)目也會(huì) 執(zhí)行相同的構(gòu)建操作。那么接下來(lái),我們?cè)賮?lái)分析下,多模塊開(kāi)發(fā)存在的另外一個(gè)問(wèn)題,重復(fù)配置的問(wèn)題,我們先來(lái)看張圖:
■ spring-webmvc、spring-jdbc在三個(gè)項(xiàng)目模塊中都有出現(xiàn),這樣就出現(xiàn)了重復(fù)的內(nèi)容
■ spring-test只在ssm_crm和ssm_goods中出現(xiàn),而在ssm_order中沒(méi)有,這里是部分重復(fù)的內(nèi)容
■ 我們使用的spring版本目前是5.2.10.RELEASE ,假如后期要想升級(jí)spring版本,所有跟Spring相關(guān)jar包都得被修改,涉及到的項(xiàng)目越多,維護(hù)成本越高
繼承概念
繼承描述的是兩個(gè)工程間的關(guān)系,與java中的繼承相似,子工程可以繼承父工程中的配置信息,常用于依賴(lài)關(guān)系的繼承
作用
- 簡(jiǎn)化配置
- 減少版本沖突
二、繼承關(guān)系實(shí)施步驟
1、創(chuàng)建Maven模塊,設(shè)置打包類(lèi)型為pom
<packageing>pom<packageing>
注意事項(xiàng):建議父工程打包方式設(shè)置為pom
2、在父工程的pom文件中配置依賴(lài)關(guān)系(子工程將沿用父工程中的依賴(lài)關(guān)系)
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE</version> </dependency> ... </dependencies>
3、在配置子工程中可選的依賴(lài)關(guān)系
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency> ... </dependencies> </dependencyManagement>
4、在子工程中配置當(dāng)前工程所繼承的父工程
<!--配置該工程的父工程--> <parent> <groupId>com.itheima</groupId> <artifactId>maven_01_parent</artifactId> <version>1.0-RELEASE</version> <!--填寫(xiě)父工程的pom文件--> <relativePath>../maven_01_parent/pom.xml</relativePath> </parent>
5、在子工程中配置使用父工程中可選依賴(lài)的坐標(biāo)
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> </dependencies>
注意事項(xiàng):
子工程中使用父工程中的可選依賴(lài)時(shí),僅需要提供群組id和項(xiàng)目id,無(wú)需提供版本,版本由父工程統(tǒng)一提供,避免版本沖突,子工程中還可以定義父工程中沒(méi)有定義的依賴(lài)關(guān)系。
三、聚合與繼承的區(qū)別
作用
聚合用于快速構(gòu)建項(xiàng)目
繼承用于快速配置
相同點(diǎn)
聚合與繼承的pom.xml文件打包方式為pom,可以將兩種關(guān)系制作到同一個(gè)pom文件中
聚合與繼承均屬于設(shè)計(jì)型模塊,并無(wú)實(shí)際的模塊內(nèi)容
不同點(diǎn)
聚合是在當(dāng)前模塊中配置關(guān)系,聚合可以感知到參與聚合的模塊有哪些
繼承是在子模塊中配置關(guān)系,父模塊無(wú)法感知哪些子模塊繼承了自己
以上就是一文帶你搞懂Maven的繼承與聚合的詳細(xì)內(nèi)容,更多關(guān)于Maven繼承 聚合的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Java多線(xiàn)程處理List數(shù)據(jù)
這篇文章主要介紹了Java多線(xiàn)程處理List數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例
定時(shí)任務(wù)是一項(xiàng)至關(guān)重要的功能,它們使得我們能夠按照預(yù)定的時(shí)間執(zhí)行特定的任務(wù),本文主要介紹了Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例,感興趣的可以了解一下2024-05-05淺談緩沖字符流 BufferedReader BufferedWriter用法
這篇文章主要介紹了緩沖字符流 BufferedReader BufferedWriter的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07使用JDBC4.0操作XML類(lèi)型的字段(保存獲取xml數(shù)據(jù))的方法
jdbc4.0最重要的特征是支持xml數(shù)據(jù)類(lèi)型,接下來(lái)通過(guò)本文重點(diǎn)給大家介紹如何使用jdbc4.0操作xml類(lèi)型的字段,對(duì)jdbc4.0 xml相關(guān)知識(shí)感興趣的朋友一起看下吧2016-08-08SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄
這篇文章主要介紹了SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄,簡(jiǎn)單介紹了springmvc攔截器,單點(diǎn)登錄實(shí)現(xiàn)原理等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Java?HashMap詳解及實(shí)現(xiàn)原理
Java?HashMap是Java集合框架中最常用的實(shí)現(xiàn)Map接口的數(shù)據(jù)結(jié)構(gòu),它使用哈希表實(shí)現(xiàn),允許null作為鍵和值,可以存儲(chǔ)不同類(lèi)型的鍵值對(duì),在Java中,HashMap被廣泛應(yīng)用于各種場(chǎng)景,如緩存、數(shù)據(jù)庫(kù)連接池、路由器等,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-05-05做java這么久了居然還不知道JSON的使用(一文帶你了解)
這篇文章主要介紹了做java這么久了居然還不知道JSON的使用(一文帶你了解),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07