織夢(mèng)旅游網(wǎng)站源碼搜索引擎優(yōu)化的主題
前言
本篇博客的核心:理解maven 項(xiàng)目模塊化,繼承,聚合 的含義
maven 項(xiàng)目模塊化
含義
maven項(xiàng)目模塊化:使用maven 構(gòu)建項(xiàng)目,管理項(xiàng)目的方式,我們可以將maven項(xiàng)目根據(jù)內(nèi)在的關(guān)系拆分成很多個(gè)小項(xiàng)目【模塊】這樣更方便管理。
我舉個(gè)例子方便大家理解
在現(xiàn)實(shí)生活中,汽車(chē)廠家進(jìn)行汽車(chē)生產(chǎn)時(shí),由于整個(gè)生產(chǎn)過(guò)程非常復(fù)雜和繁瑣,工作量非常大,所以車(chē)場(chǎng)都會(huì)將整個(gè)汽車(chē)的部件分開(kāi)生產(chǎn),最終再將生產(chǎn)好的部件進(jìn)行組裝,形成一臺(tái)完整的汽車(chē)。
如下圖所示
如果對(duì)應(yīng)到maven工程 根據(jù)我們之前所學(xué)的三層架構(gòu)思想,一個(gè)完整的maven項(xiàng)目根據(jù)模塊化的理解,應(yīng)該就是如下圖所示:
maven 繼承
在我們學(xué)習(xí)Java基礎(chǔ)的時(shí)候就知道, 封裝,繼承 ,多態(tài) 是對(duì)象的三大特點(diǎn)。其中繼承 是一般是子類(lèi) 繼承父類(lèi),從父類(lèi)中獲取屬性或方法。
在這里 maven 繼承,又是表示什么呢?
子模塊從父模塊中繼承 共享的依賴,配置等
大家請(qǐng)看,上面那幅圖,我們發(fā)現(xiàn) ,無(wú)論是實(shí)體類(lèi) projo? 還是 dao層,service層 ,都寫(xiě)著從maven父模塊中去繼承一些東西可能是依賴也可能是相同的配置等【這個(gè)根據(jù)具體情況論】
現(xiàn)在我們知道 maven 繼承是什么意思后,我們應(yīng)該 如何表示 子模塊和父模塊的關(guān)系呢?
在Java基礎(chǔ)中我們知道 extend 關(guān)鍵字 后面跟著的父類(lèi)。那么在maven 構(gòu)建的項(xiàng)目中,我們應(yīng)該如何確定該模塊是父模塊呢?
如下圖所示
我們是通過(guò)在該模塊的pom 文件中 添加? 打包方式為 pom 在 packaging 標(biāo)簽中
<packaging> pom </packaging>
maven 聚合
maven 聚合的含義?
就是將 maven 子模塊 放在父模塊中pom文件統(tǒng)一管理 使用modules 標(biāo)簽
好處
- 統(tǒng)一管理
例如拆分后的maven工程有多個(gè),如果要進(jìn)行打包,就需要針對(duì)每個(gè)工程分別執(zhí)行打包命令,操作起來(lái)非常繁瑣。這時(shí)就可以使用<modules>標(biāo)簽將這些工程統(tǒng)一聚合到maven工程中,需要打包的時(shí)候,只需要在此工程中執(zhí)行一次打包命令,其下被聚合的工程就都會(huì)被打包了。
- 辨別身份
當(dāng)在父模塊中看到 modules 標(biāo)簽,就知道該標(biāo)簽的內(nèi)容就是表示都是子模塊的
如下圖所示
實(shí)例
創(chuàng)建一個(gè)maven項(xiàng)目,其中包括子模塊,父模塊
重點(diǎn)
這些 表示maven 繼承,聚合關(guān)系 不用我們手動(dòng)在maven 父模塊的pom文件中添加,一般是我們當(dāng)右鍵點(diǎn)擊父模塊創(chuàng)建子模塊時(shí),會(huì)自動(dòng)更新到pom文件中。