一文帶你搞懂Maven的繼承與聚合

一、繼承

我們已經完成瞭使用聚合工程去管理項目,聚合工程進行某一個構建操作,其他被其管理的項目也會 執行相同的構建操作。那麼接下來,我們再來分析下,多模塊開發存在的另外一個問題,重復配置的問題,我們先來看張圖:

■ spring-webmvc、spring-jdbc在三個項目模塊中都有出現,這樣就出現瞭重復的內容

■ spring-test隻在ssm_crm和ssm_goods中出現,而在ssm_order中沒有,這裡是部分重復的內容

■ 我們使用的spring版本目前是5.2.10.RELEASE ,假如後期要想升級spring版本,所有跟Spring相關jar包都得被修改,涉及到的項目越多,維護成本越高

繼承概念

繼承描述的是兩個工程間的關系,與java中的繼承相似,子工程可以繼承父工程中的配置信息,常用於依賴關系的繼承

作用

  • 簡化配置
  • 減少版本沖突

二、繼承關系實施步驟

1、創建Maven模塊,設置打包類型為pom

<packageing>pom<packageing>

註意事項:建議父工程打包方式設置為pom

2、在父工程的pom文件中配置依賴關系(子工程將沿用父工程中的依賴關系)

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        ...
</dependencies>

3、在配置子工程中可選的依賴關系

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.16</version>
            </dependency>
            ...
        </dependencies>
</dependencyManagement>

4、在子工程中配置當前工程所繼承的父工程

<!--配置該工程的父工程-->
  <parent>
    <groupId>com.itheima</groupId>
    <artifactId>maven_01_parent</artifactId>
    <version>1.0-RELEASE</version>
    <!--填寫父工程的pom文件-->
    <relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>

5、在子工程中配置使用父工程中可選依賴的坐標

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
</dependencies>

註意事項:

子工程中使用父工程中的可選依賴時,僅需要提供群組id和項目id,無需提供版本,版本由父工程統一提供,避免版本沖突,子工程中還可以定義父工程中沒有定義的依賴關系。

三、聚合與繼承的區別

作用

聚合用於快速構建項目

繼承用於快速配置

相同點

聚合與繼承的pom.xml文件打包方式為pom,可以將兩種關系制作到同一個pom文件中

聚合與繼承均屬於設計型模塊,並無實際的模塊內容

不同點

聚合是在當前模塊中配置關系,聚合可以感知到參與聚合的模塊有哪些

繼承是在子模塊中配置關系,父模塊無法感知哪些子模塊繼承瞭自己

以上就是一文帶你搞懂Maven的繼承與聚合的詳細內容,更多關於Maven繼承 聚合的資料請關註WalkonNet其它相關文章!

推薦閱讀: