【Maven】聚合和繼承
Maven的聚合特效能夠把專案的各個模組聚合在一起構建,而Maven的繼承特效能夠幫助抽取各模組相同的依賴和外掛配置。在簡化POM的同時,還能促進各個模組配置的一致性。
聚合
我們想一次構建兩個專案,而不是到兩個模組的目錄下分別執行mvn命令,Maven聚合(多模組)這一特性為該需求服務;
用於聚合的模組,本身是一個Maven專案,有自己的POM檔案;它的打包packaging的值必須為pom,否則無法構建;
modules:實現聚合的最核心的配置,它的值是相對於當前POM的相對目錄;
聚合模組中僅是一個pom.xml檔案,幫助聚合其他模組構建的工具,本身無實質的內容;
執行mvn clean install命令時,Maven會解析聚合模組的POM,分析要構建的模組,並計算出一個反應堆構建順序(Reactor Build Order),然後根據這個順序依次構建各個模組;反應堆的所有模組組成的一個構建結構。
繼承:
消除重複,避免重複帶來的多餘的勞動和更多的潛在的問題,使用繼承來消除重複;
在父POM中宣告一些配置供子POM繼承,實現"一處宣告,多處使用"的目的。
父模組的packaging為pom。
Maven提供的<dependencyManagement>元素既能讓子模組繼承到父模組的依賴配置,又能保證子模組依賴使用的靈活性。在<dependencyManagement>元素下的依賴宣告不會引入實際的依賴,但是它能夠約束dependencies下的依賴使用。
依賴與繼承
多模組Maven專案中的聚合與繼承目的是完全不同的。前者:為了方便快速構建專案,後者:為了消除重複配置;
聚合模組:它知道哪些被聚合的模組,但那些被聚合的模組不知道這個聚合模組的存在;
聚成的父POM,它不知道哪些子模組繼承於它,但哪些子模組必須知道自己的父POM是什麼;
聚合和繼承的POM的packaging都是必須pom,同時,聚合模組與繼承關係中的父模組除了POM之外都沒有實質的內容;
相關文章
- Maven 聚合與繼承Maven繼承
- Maven中dependency和plugins的繼承與約束MavenPlugin繼承
- 原型和繼承原型繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- es5繼承和es6類和繼承繼承
- Javascript 繼承和克隆JavaScript繼承
- 多型和繼承多型繼承
- 封裝和繼承封裝繼承
- 菱形繼承,虛繼承繼承
- 原型,繼承——原型繼承原型繼承
- Python 繼承 和 多型Python繼承多型
- javascript的原型和繼承JavaScript原型繼承
- 類的繼承和派生繼承
- css可繼承屬性和非繼承屬性一覽CSS繼承
- 多繼承 與 多重繼承繼承
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- CSS的繼承和使用方式CSS繼承
- JS的原型鏈和繼承JS原型繼承
- 封裝、繼承和多型封裝繼承多型
- OOP的多型和繼承OOP多型繼承
- Java之繼承和抽象類Java繼承抽象
- 繼承繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- ES6繼承和ES5繼承是完全一樣的麼?繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 類的繼承_子類繼承父類繼承
- 繼承關係和魔術方法繼承
- 深入理解原型鏈和繼承原型繼承
- 繼承的優點和缺點繼承
- 白話JavaScript原型鏈和繼承JavaScript原型繼承
- Python中的繼承和多型Python繼承多型
- JavaScript中的繼承和組合JavaScript繼承
- 實驗五 繼承和多型繼承多型
- 實驗5 繼承和多型繼承多型
- JavaScript繼承JavaScript繼承
- javascript:繼承JavaScript繼承
- python繼承Python繼承
- JavaScript 繼承JavaScript繼承