溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

發(fā)布時(shí)間:2021-05-11 15:59:29 來(lái)源:億速云 閱讀:148 作者:Leah 欄目:編程語(yǔ)言

使用Maven多模塊怎么創(chuàng)建父子關(guān)系?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

Maven多模塊(pom)

1.1 父模塊創(chuàng)建

先創(chuàng)建個(gè)簡(jiǎn)單的空的Maven Project作為父項(xiàng)目

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

1.2 子模塊創(chuàng)建

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

1.3 父子模塊(繼承關(guān)系)

注意:此時(shí)父子模塊為兩個(gè)獨(dú)立的項(xiàng)目。

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

在父項(xiàng)目中再添加一個(gè)依賴。

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

那如果不想無(wú)條件繼承父工程的所有依賴,而想讓子項(xiàng)目自行選擇需要的依賴又該如何做呢?

1.4 dependencyManagement

在父項(xiàng)目中用<dependencies>節(jié)點(diǎn)包裹<dependencies>節(jié)點(diǎn),并且添加的是完整的依賴坐標(biāo)(gav)。

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

此時(shí)子項(xiàng)目中的Maven Dependencies又會(huì)消失,說(shuō)明添加<dependencies>節(jié)點(diǎn)后,它并不負(fù)責(zé)相關(guān)依賴的下載。

子項(xiàng)目加入相應(yīng)同樣依賴,注意不要加versionversion繼承自父項(xiàng)目),需要什么樣的依賴就聲明什么。

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

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

使用Maven多模塊怎么創(chuàng)建父子關(guān)系

dependencyManagement的作用:依賴版本管理器

  1. 本身并不下載任何依賴,只是管理依賴的版本。依賴的下載依然需要單獨(dú)的<dependencies>(不加dependencyManagement,額外寫一個(gè))去做

  2. 如果<dependencies>中的<dependency>沒有聲明版本號(hào)(version),maven會(huì)去尋找有無(wú)對(duì)應(yīng)的dependencyManagement,當(dāng)前工程沒有就會(huì)向上找父工程。如果找到就以dependencyManagement中對(duì)應(yīng)依賴聲明的version為準(zhǔn),否則報(bào)錯(cuò)version is missing。

看完上述內(nèi)容,你們掌握使用Maven多模塊怎么創(chuàng)建父子關(guān)系的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI