Maven多模塊之父子關係

Maven多模塊項目,適用於一些比較大的項目,經過合理的模塊拆分,實現代碼的複用,便於維護和管理。尤爲是一些開源框架,也是採用多模塊的方式,提供插件集成,用戶能夠根據須要配置指定的模塊。

Maven多模塊(pom)

1.1 父模塊建立

先建立個簡單的空的Maven Project做爲父項目框架

父模塊步驟1

父模塊步驟2

父模塊步驟3

1.2 子模塊建立

從新建立一個Maven Project做爲子項目maven

子模塊步驟1

子模塊步驟2

子模塊步驟3

1.3 父子模塊(繼承關係)

注意:此時父子模塊爲兩個獨立的項目。spa

父子項目目錄結構

步驟1:子項目中加入<parent>節點,傳入父項目完整座標。插件

父項目座標

步驟2:將子項目中的依賴都註釋掉。code

註釋子項目依賴

注意:此時子項目中的沒有了Maven Dependencies。繼承

步驟3:將子項目註釋的依賴添加到父項目中。ci

父項目添加依賴

注意:此時子項目中的依賴又添加回來了。it

子項目的Maven Dependencies

這種直接在父工程中加入 <dependencies>的方式,讓子工程能夠直接複用依賴,可是缺點是 全部的子項目無條件繼承父工程全部依賴,因此若是要在父工程中添加依賴只能針對很是通用的依賴。

在父項目中再添加一個依賴。io

父模塊POM

子項目同時也繼承了新添加的依賴。class

子項目依賴

那若是不想無條件繼承父工程的全部依賴,而想讓子項目自行選擇須要的依賴又該如何作呢?

1.4 dependencyManagement

在父項目中用 <dependencies>節點包裹 <dependencies>節點,而且添加的是 完整的依賴座標(gav)

dependencies

此時子項目中的Maven Dependencies又會消失,說明添加 <dependencies>節點後,它並不負責相關依賴的下載。

子項目加入相應一樣依賴,注意不要加versionversion繼承自父項目),須要什麼樣的依賴就聲明什麼。

子模塊依賴

特別注意,若是父項目提供了 groupidversion,則刪除子項目座標中的 groupidversion,直接繼承父項目相關座標。

註釋子項目節點

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

  1. 自己並不下載任何依賴,只是管理依賴的版本。依賴的下載依然須要單獨的<dependencies>(不加dependencyManagement,額外寫一個)去作
  2. 若是<dependencies>中的<dependency>沒有聲明版本號(version),maven會去尋找有無對應的dependencyManagement,當前工程沒有就會向上找父工程。若是找到就以dependencyManagement中對應依賴聲明的version爲準,不然報錯version is missing。
相關文章
相關標籤/搜索