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


在这里插入图片描述

个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


Maven

  • 一、聚合
    • 1.1创建Maven模块,设置打包类型为pom
    • 1.2设置当前聚合工程所包含的子模块名称
  • 二、继承
    • 2.1创建Maven模块,设置打包类型为pom
    • 2.2在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)
    • 2.3配置子工程中可选的依赖关系
    • 2.4在子工程中配置当前工程所继承的父工程
  • 三、聚合和继承的区别

一、聚合

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

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

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

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

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

二、继承

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

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

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

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

<dependencies>
	<dependencicy>
		<groupId>groupId>
		<artifactId>spring-webmvcartifactId>
		<version><5.2.10.RELEASE/version>
	dependencicy>
	.......
dependencies>

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

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>druidartifactId>
                <version>1.2.16.16version>
            dependency>
        dependencies>
    dependencyManagement>

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

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

三、聚合和继承的区别

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

你可能感兴趣的:(python,开发语言)