解决多模块开发中的问题(聚合&继承)

简介: 解决多模块开发中的问题(聚合&继承)

一、聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
  • 聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
  • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

1.1创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>
  • 每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war

1.2设置当前聚合工程所包含的子模块名称

<modules>
  <module>../maven_ssm</module>
  <module>../maven_pojo</module>
  <module>../maven_dao</module>
</modules>
  • 聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的书写位置无关
  • 参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合

二、继承

  • 概念:继承描述的的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
  • 作用:
  • 简化配置
  • 减少版本冲突

2.1创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>
  • 建议父工程打包方式设置为pom

2.2在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)

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

2.3配置子工程中可选的依赖关系

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

2.4在子工程中配置当前工程所继承的父工程

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <!--填写父工程的pom文件-->
        <!-- lookup parent from repository -->
        <relativePath/> 
    </parent>
  • 子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目Id,无需提供版本,版本由父工程统一提供,避免版本冲突
  • 子工程中还可以定义父工程中没有定义的依赖关系

三、聚合和继承的区别

  • 作用:
  • 聚合用于快速构建项目
  • 继承用于快速配置
  • 相同点:
  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom 文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点:
  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己


 

相关文章
|
1月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
54 0
|
8月前
|
设计模式 Java
Java设计模式七大原则-合成聚合复用原则
Java设计模式七大原则-合成聚合复用原则
59 0
|
10月前
|
数据安全/隐私保护
nestjs装饰器聚合,让你的代码更加灵活,复用
nestjs装饰器聚合,让你的代码更加灵活,复用
|
XML Java Maven
Maven高级——继承与聚合——继承关系实现
Maven高级——继承与聚合——继承关系实现
132 0
|
uml C++ 容器
「软件设计」UML中关联,聚合和组合的区别是什么?
「软件设计」UML中关联,聚合和组合的区别是什么?
|
uml C++ 容器
「软件设计」UML中关联,聚合和组合区别
「软件设计」UML中关联,聚合和组合区别
|
Java
java面向对象高级分层实例_接口类
java面向对象高级分层实例_接口类
46 0
|
前端开发
前端学习案例7-组合继承
前端学习案例7-组合继承
54 0
前端学习案例7-组合继承
|
前端开发
前端学习案例6-组合继承
前端学习案例6-组合继承
52 0
前端学习案例6-组合继承
|
架构师 Java Maven
组件构建原则(二):组件聚合
组件构建原则(二):组件聚合
313 0

热门文章

最新文章