Maven多模塊項目,適用於一些比較大的項目,經過合理的模塊拆分,實現代碼的複用,便於維護和管理。尤爲是一些開源框架,也是採用多模塊的方式,提供插件集成,用戶能夠根據須要配置指定的模塊。
先建立個簡單的空的Maven Project做爲父項目框架
從新建立一個Maven Project做爲子項目maven
注意:此時父子模塊爲兩個獨立的項目。spa
步驟1:子項目中加入<parent>
節點,傳入父項目完整座標。插件
步驟2:將子項目中的依賴都註釋掉。code
注意:此時子項目中的沒有了Maven Dependencies。繼承
步驟3:將子項目註釋的依賴添加到父項目中。ci
注意:此時子項目中的依賴又添加回來了。it
這種直接在父工程中加入
<dependencies>
的方式,讓子工程能夠直接複用依賴,可是缺點是
全部的子項目無條件繼承父工程全部依賴,因此若是要在父工程中添加依賴只能針對很是通用的依賴。
在父項目中再添加一個依賴。io
子項目同時也繼承了新添加的依賴。class
那若是不想無條件繼承父工程的全部依賴,而想讓子項目自行選擇須要的依賴又該如何作呢?
在父項目中用<dependencies>
節點包裹<dependencies>
節點,而且添加的是 完整的依賴座標(gav)。
此時子項目中的Maven Dependencies又會消失,說明添加
<dependencies>
節點後,它並不負責相關依賴的下載。
子項目加入相應一樣依賴,注意不要加version
(version
繼承自父項目),須要什麼樣的依賴就聲明什麼。
特別注意,若是父項目提供了groupid
和version
,則刪除子項目座標中的groupid
和version
,直接繼承父項目相關座標。
dependencyManagement
的做用:依賴版本管理器
<dependencies>
(不加dependencyManagement
,額外寫一個)去作<dependencies>
中的<dependency>
沒有聲明版本號(version
),maven會去尋找有無對應的dependencyManagement
,當前工程沒有就會向上找父工程。若是找到就以dependencyManagement
中對應依賴聲明的version
爲準,不然報錯version is missing。