Maven高級(jí)

目錄
分模塊設(shè)計(jì)與開(kāi)發(fā)
繼承與聚合
私服

一、分模塊設(shè)計(jì)與開(kāi)發(fā)
1.為什么要使用分模塊設(shè)計(jì)?
將項(xiàng)目按照功能拆分成若干個(gè)子模塊,方便項(xiàng)目的管理維護(hù)、擴(kuò)展,也方便模塊間的相互調(diào)用,資源共享。



2.分模塊開(kāi)發(fā)步驟:
創(chuàng)建maven模塊 tlias-pojo,存放實(shí)體類。
創(chuàng)建maven模塊 tlias-utils,存放相關(guān)工具類。
注意事項(xiàng):分模塊開(kāi)發(fā)需要先針對(duì)模塊功能進(jìn)行設(shè)計(jì),再進(jìn)行編碼。不會(huì)先將工程開(kāi)發(fā)完畢,然后進(jìn)行拆分。

3.小結(jié):
1.什么是分模塊設(shè)計(jì)??
將項(xiàng)目按照功能拆分成若干個(gè)子模塊
2.為什么要分模塊設(shè)計(jì)?
方便項(xiàng)目的管理維護(hù)、擴(kuò)展,也方便模塊間的相互調(diào)用,資源共享
3.注意事項(xiàng)
分模塊設(shè)計(jì)需要先針對(duì)模塊功能進(jìn)行設(shè)計(jì),再進(jìn)行編碼。不會(huì)先將工程開(kāi)發(fā)完畢,然后進(jìn)行拆分

二、繼承與聚合
1.繼承關(guān)系

概念:繼承描述的是兩個(gè)工程間的關(guān)系,與java中的繼承相似,子工程可以繼承父工程中的配置信息,常見(jiàn)于依賴關(guān)系的繼承。
作用:簡(jiǎn)化依賴配置、統(tǒng)一管理依賴
實(shí)現(xiàn):<parent> … </parent>

繼承關(guān)系實(shí)現(xiàn)步驟:
①. 創(chuàng)建maven模塊 tlias-parent ,該工程為父工程,設(shè)置打包方式pom(默認(rèn)jar)。
jar:普通模塊打包,springboot項(xiàng)目基本都是jar包(內(nèi)嵌tomcat運(yùn)行)
war:普通web程序打包,需要部署在外部的tomcat服務(wù)器中運(yùn)行
pom:父工程或聚合工程,該模塊不寫(xiě)代碼,僅進(jìn)行依賴管理
②. 在子工程的pom.xml文件中,配置繼承關(guān)系。
③. 在父工程中配置各個(gè)工程共有的依賴(子工程會(huì)自動(dòng)繼承父工程的依賴)。

①. 創(chuàng)建maven模塊 tlias-parent ,該工程為父工程,設(shè)置打包方式pom。
②. 在子工程的pom.xml文件中,配置繼承關(guān)系。

注意事項(xiàng):
在子工程中,配置了繼承關(guān)系之后,坐標(biāo)中的groupId是可以省略的,因?yàn)闀?huì)自動(dòng)繼承父工程的 。
relativePath指定父工程的pom文件的相對(duì)位置(如果不指定,將從本地倉(cāng)庫(kù)/遠(yuǎn)程倉(cāng)庫(kù)查找該工程)。
③. 在父工程中配置各個(gè)工程共有的依賴(子工程會(huì)自動(dòng)繼承父工程的依賴)
注意事項(xiàng):
若父子工程都配置了同一個(gè)依賴的不同版本,以子工程的為準(zhǔn)。
小結(jié):
maven項(xiàng)目父子工程結(jié)構(gòu)說(shuō)明:



2.版本鎖定
在maven中,可以在父工程的pom文件中通過(guò) <dependencyManagement> 來(lái)統(tǒng)一管理依賴版本。

父工程:
子工程:
注意事項(xiàng):
子工程引入依賴時(shí),無(wú)需指定 <version> 版本號(hào),父工程統(tǒng)一管理。變更依賴版本,只需在父工程中統(tǒng)一變更。

3.自定義屬性/引用屬性

思考:
<dependencyManagement> 與 <dependencies>的區(qū)別是什么?
<dependencies> 是直接依賴,在父工程配置了依賴,子工程會(huì)直接繼承下來(lái)。?
<dependencyManagement> 是統(tǒng)一管理依賴版本,不會(huì)直接依賴,還需要在子工程中引入所需依賴(無(wú)需指定版本)

聚合

聚合:將多個(gè)模塊組織成一個(gè)整體,同時(shí)進(jìn)行項(xiàng)目的構(gòu)建。
聚合工程:?一個(gè)不具有業(yè)務(wù)功能的“空”工程(有且僅有一個(gè)pom文件)
作用:快速構(gòu)建項(xiàng)目(無(wú)需根據(jù)依賴關(guān)系手動(dòng)構(gòu)建,直接在聚合工程上構(gòu)建即可)
maven中可以通過(guò) <modules> 設(shè)置當(dāng)前聚合工程所包含的子模塊名稱
父工程(聚合工程):
注意事項(xiàng):
聚合工程中所包含的模塊,在構(gòu)建時(shí),會(huì)自動(dòng)根據(jù)模塊間的依賴關(guān)系設(shè)置構(gòu)建順序,與聚合工程中模塊的配置書(shū)寫(xiě)位置無(wú)關(guān)。

小結(jié):
繼承與聚合
作用
聚合用于快速構(gòu)建項(xiàng)目
繼承用于簡(jiǎn)化依賴配置、統(tǒng)一管理依賴
相同點(diǎn):
聚合與繼承的pom.xml文件打包方式均為pom,可以將兩種關(guān)系制作到同一個(gè)pom文件中
聚合與繼承均屬于設(shè)計(jì)型模塊,并無(wú)實(shí)際的模塊內(nèi)容
不同點(diǎn):
聚合是在聚合工程中配置關(guān)系,聚合可以感知到參與聚合的模塊有哪些
繼承是在子模塊中配置關(guān)系,父模塊無(wú)法感知哪些子模塊繼承了自己

三、私服
介紹:私服是一種特殊的遠(yuǎn)程倉(cāng)庫(kù),它是架設(shè)在局域網(wǎng)內(nèi)的倉(cāng)庫(kù)服務(wù),用來(lái)代理位于外部的中央倉(cāng)庫(kù),用于解決團(tuán)隊(duì)內(nèi)部的資源共享與資源同步問(wèn)題。

依賴查找順序:
本地倉(cāng)庫(kù)
私服
中央倉(cāng)庫(kù)??
注意事項(xiàng):
私服在企業(yè)項(xiàng)目開(kāi)發(fā)中,一個(gè)項(xiàng)目/公司,只需要一臺(tái)即可(無(wú)需我們自己搭建,會(huì)使用即可)。

資源上傳與下載

項(xiàng)目版本:
RELEASE(發(fā)行版本):功能趨于穩(wěn)定、當(dāng)前更新停止,可以用于發(fā)行的版本,存儲(chǔ)在私服中的RELEASE倉(cāng)庫(kù)中。
SNAPSHOT(快照版本):功能不穩(wěn)定、尚處于開(kāi)發(fā)中的版本,即快照版本,存儲(chǔ)在私服的SNAPSHOT倉(cāng)庫(kù)中。

私服配置步驟說(shuō)明:
訪問(wèn)私服:http://192.168.150.101:8081
訪問(wèn)密碼:admin/admin
使用私服,需要在maven的settings.xml配置文件中,做如下配置:
1. 需要在 servers?標(biāo)簽中,配置訪問(wèn)私服的個(gè)人憑證(訪問(wèn)的用戶名和密碼)
2. 在 mirrors中只配置我們自己私服的連接地址(如果之前配置過(guò)阿里云,需要直接替換掉)
3.? 需要在 profiles?中,增加如下配置,來(lái)指定snapshot快照版本的依賴,依然允許使用
4. 如果需要上傳自己的項(xiàng)目到私服上,需要在項(xiàng)目的pom.xml文件中,增加如下配置,來(lái)配置項(xiàng)目發(fā)布的地址(也就是私服的地址)
5. 發(fā)布項(xiàng)目,直接運(yùn)行 deploy 生命周期即可 (發(fā)布時(shí),建議跳過(guò)單元測(cè)試)


啟動(dòng)本地私服
1. 解壓: apache-maven-nexus.zip
2. 進(jìn)入目錄: apache-maven-nexus\nexus-3.39.0-01\bin
3. 啟動(dòng)服務(wù):雙擊 start.bat?
4. 訪問(wèn)服務(wù):localhost:8081
5. 私服配置說(shuō)明:將上述配置私服信息的 192.168.150.101 改為 localhost?