Maven多模塊之父子關(guān)系的創(chuàng)建
Maven多模塊項(xiàng)目,適用于一些比較大的項(xiàng)目,通過合理的模塊拆分,實(shí)現(xiàn)代碼的復(fù)用,便于維護(hù)和管理。尤其是一些開源框架,也是采用多模塊的方式,提供插件集成,用戶可以根據(jù)需要配置指定的模塊。
Maven多模塊(pom)
1.1 父模塊創(chuàng)建
先創(chuàng)建個(gè)簡單的空的Maven Project作為父項(xiàng)目



1.2 子模塊創(chuàng)建
重新創(chuàng)建一個(gè)Maven Project作為子項(xiàng)目



1.3 父子模塊(繼承關(guān)系)
注意:此時(shí)父子模塊為兩個(gè)獨(dú)立的項(xiàng)目。

步驟1:子項(xiàng)目中加入<parent>節(jié)點(diǎn),傳入父項(xiàng)目完整坐標(biāo)。

步驟2:將子項(xiàng)目中的依賴都注釋掉。

注意:此時(shí)子項(xiàng)目中的沒有了Maven Dependencies。

步驟3:將子項(xiàng)目注釋的依賴添加到父項(xiàng)目中。

注意:此時(shí)子項(xiàng)目中的依賴又添加回來了。

這種直接在父工程中加入<dependencies>的方式,讓子工程可以直接復(fù)用依賴,但是缺點(diǎn)是所有的子項(xiàng)目無條件繼承父工程所有依賴,所以如果要在父工程中添加依賴只能針對(duì)非常通用的依賴。
在父項(xiàng)目中再添加一個(gè)依賴。

子項(xiàng)目同時(shí)也繼承了新添加的依賴。

那如果不想無條件繼承父工程的所有依賴,而想讓子項(xiàng)目自行選擇需要的依賴又該如何做呢?
1.4 dependencyManagement
在父項(xiàng)目中用<dependencies>節(jié)點(diǎn)包裹<dependencies>節(jié)點(diǎn),并且添加的是完整的依賴坐標(biāo)(gav)。

此時(shí)子項(xiàng)目中的Maven Dependencies又會(huì)消失,說明添加<dependencies>節(jié)點(diǎn)后,它并不負(fù)責(zé)相關(guān)依賴的下載。
子項(xiàng)目加入相應(yīng)同樣依賴,注意不要加version(version繼承自父項(xiàng)目),需要什么樣的依賴就聲明什么。

特別注意,如果父項(xiàng)目提供了groupid和version,則刪除子項(xiàng)目坐標(biāo)中的groupid和version,直接繼承父項(xiàng)目相關(guān)坐標(biāo)。

dependencyManagement的作用:依賴版本管理器
- 本身并不下載任何依賴,只是管理依賴的版本。依賴的下載依然需要單獨(dú)的
<dependencies>(不加dependencyManagement,額外寫一個(gè))去做 - 如果
<dependencies>中的<dependency>沒有聲明版本號(hào)(version),maven會(huì)去尋找有無對(duì)應(yīng)的dependencyManagement,當(dāng)前工程沒有就會(huì)向上找父工程。如果找到就以dependencyManagement中對(duì)應(yīng)依賴聲明的version為準(zhǔn),否則報(bào)錯(cuò)version is missing。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot?Vue實(shí)現(xiàn)單點(diǎn)登陸功能示例詳解
這篇文章主要為大家介紹了Springboot?Vue實(shí)現(xiàn)單點(diǎn)登陸功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
關(guān)于@Autowierd && @Resource 你真的了解嗎
這篇文章主要介紹了關(guān)于@Autowierd && @Resource的具體使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java8新特性之空指針異常的克星Optional類的實(shí)現(xiàn)
這篇文章主要介紹了Java8新特性之空指針異常的克星Optional類的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Springboot項(xiàng)目平滑關(guān)閉及自動(dòng)化關(guān)閉腳本
這篇文章主要為大家詳細(xì)介紹了Springboot項(xiàng)目平滑關(guān)閉及自動(dòng)化關(guān)閉腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
BlockingQueue隊(duì)列處理高并發(fā)下的日志
這篇文章主要介紹了BlockingQueue隊(duì)列處理高并發(fā)下的日志示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
java實(shí)現(xiàn)學(xué)生教師管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)學(xué)生教師管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
Java利用EasyExcel實(shí)現(xiàn)導(dǎo)出導(dǎo)入功能的示例代碼
EasyExcel是一個(gè)基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具。本文廢話不多說,直接上手試試,用代碼試試EasyExcel是否真的那么好用2022-11-11
PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法
下面小編就為大家分享一篇PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Spring框架的環(huán)境搭建和測(cè)試實(shí)現(xiàn)
這篇文章主要介紹了Spring框架的環(huán)境搭建和測(cè)試實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

