ccran 的个人博客 ccran 的个人博客

记录精彩的程序人生

目录
Maven学习(3)
/  

Maven学习(3)

Maven学习(3)

本次学习包括以下两点:

  • Maven继承
  • Maven聚合

一、Maven继承

Maven继承的含义与Java中继承的含义类似,对Java来说是子类想共享父类的行为,而对Maven来说,则是子模块共享父模块的配置,常用的是继承依赖的版本信息。

Maven继承最常见的例子是通过SpringBoot初始化向导创建的SpringBoot工程,与SpringBoot相关的依赖包都不再需要通过version标签指定版本,是因为父模块中通过dependencyManagement标签规定了版本信息。

以2.0.6.RELEASE版本为例:

新建的项目以spring-boot-starter-parent作为父模块

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

spring-boot-starter-parent又以spring-boot-dependencies作为父模块

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

spring-boot-dependencies中进行了依赖管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>2.0.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.0.6.RELEASE</version>
        </dependency>
        ...

二、 Maven聚合

Maven聚合主要是用于多个模块的统一构建管理,例子则是对微服务项目的聚合。

以电商项目的微服务聚合为例:

  1. 创建Mall项目作为根项目,打包方式使用pom用于聚合微服务项目
  2. 依次创建各个微服务Module如订单服务Order,用户服务User
<groupId>com.ccran</groupId>
<artifactId>mall</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Mall</name>
<packaging>pom</packaging>

<modules>
    <module>Order</module>
    <module>User</module>
    <module>Common</module>
</modules>
  1. 通过对根项目执行生命周期中的各个命令来统一构建。例如执行对根项目执行mvn clean命令,所有微服务模块的target目录生成的class和资源文件都会进行清除。

mulmodule.png

三、总结

  1. Maven继承用于抽取公共配置,常用于依赖版本的规定。
  2. Maven聚合用于多模块统一构建。

标题:Maven学习(3)
作者:ccran
地址:https://ccran.online/articles/2020/05/09/1588996015397.html