首页 > 其他分享 >maven系列:聚合与继承

maven系列:聚合与继承

时间:2023-08-13 18:45:22浏览次数:37  
标签:聚合 工程 继承 maven pom 模块

目录

一、聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合

  • 聚合工程:通常是一个不具有业务功能的”空“工程(有且仅有一个pom文件)

  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

    • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

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

<packaging>pom</packaging>

注意事项:

  1. 每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war

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

<modules>
    <module>../maven_ssm</module>
    <module>../maven_pojo</module>
    <module>../maven_dao</module>
</modules>

注意事项:

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

二、 继承

问题导入

什么叫继承?

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

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

<packaging>pom</packaging>

注意事项:

  1. 建议父工程打包方式设置为pom

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

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

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

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

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

<!--定义该工程的父工程-->
<parent>
    <groupId>com.itheima</groupId>
    <artifactId>maven_parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--填写父工程的pom文件,根据实际情况填写-->
    <relativePath>../maven_parent/pom.xml</relativePath>
</parent>

在子工程中配置使用父工程中可选依赖的坐标

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

注意事项:

  1. 子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突
  2. 子工程中还可以定义父工程中没有定义的依赖关系

三、聚合与继承的区别

问题导入

聚合和继承的作用?

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

标签:聚合,工程,继承,maven,pom,模块
From: https://www.cnblogs.com/vic-tory/p/17626976.html

相关文章

  • maven系列:属性管理和版本管理
    目录一、属性配置与使用①:定义属性②:引用属性二、资源文件引用属性①:定义属性②:配置文件中引用属性③:开启资源文件目录加载属性的过滤器④:配置maven打war包时,忽略web.xml检查三、其他属性(了解)四、版本管理工程版本发布版本定义属性有什么好处?一、属性配置与使用①:定义属性......
  • maven系列:多环境配置与应用
    目录一、多环境配置步骤定义多环境使用多环境(构建过程)二、跳过测试(了解)应用场景跳过测试命令2.3细粒度控制跳过测试多环境配置有什么好处?maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境一、多环境配置步骤定义多环境<!--定义多环境--><profiles><!--......
  • Maven引入本地jar包
    如果是我们一个人的项目,那直接使用传统方式将jar导入项目中即可,但是在多人开发中每个人都需要导一次,太过麻烦,因此使用另外一种方法。如:引入taobao-sdk-java.jar操作自定义目录,这里在project的根目录新建lib文件夹,将jar放进去pom.xml中引入<dependency><groupId......
  • Maven引用公共模块
    项目结构:Common的pom:在Buisiniss的pom中添加:<dependency><groupId>cn.laoyao</groupId><artifactId>Common</artifactId><version>1.0-SNAPSHOT</version></dependency>就可以直接使用了......
  • maven环境配置
    父工程常用maven环境881.83.4.18.0.303.0.30.9.12.0.21<dependencyManagement><dependencies><!--mybatis-plus持久层--><dependency><groupId>com.baomidou</groupId>&......
  • maven系列:基本命令(创建类、构建打包类、IDEA中操作)
    目录一、创建类命令创建普通Maven项目创建WebMaven项目发布第三方Jar到本地库中二、构建打包类命令编译源代码编译测试代码编译测试代码打包项目清除打包的项目清除历史打包并重新打包清除并install到本地查看当前项目已被解析的依赖上传到私服三、IDEA中Maven操作通过Terminal执......
  • 【谷粒学院】Maven导入aliyun-java-vod-upload包依赖失败
    【谷粒学院】Maven导入aliyun-java-vod-upload包依赖失败<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-vod-upload</artifactId><version>${aliyun-java-vod-upload.version}</version></dependency&......
  • maven系列:依赖管理和依赖范围
    目录一、依赖管理使用坐标导入jar包使用坐标导入jar包–快捷方式使用坐标导入jar包–自动导入二、依赖范围一、依赖管理使用坐标导入jar包1.在pom.xml中编写<dependencies>标签2.在<dependencies>标签中使用<dependency>引入坐标3.定义坐标的groupId,artifact......
  • maven3.5.4安装
    就是直接把我网盘里面的maven解压就行,setting.xml文件内的镜像我配的时阿里的,可以直接用,网盘链接如下链接:https://pan.baidu.com/s/1ZPS6eh8jBjteSgDZm2HeIg提取码:dysb--来自百度网盘超级会员V4的分享 注意的是记得要配置你的本地依赖库的路径,要选你自己的这里是我自己的,......
  • Linux系统之Team链路聚合配置
    (Linux系统之Team链路聚合配置)一、Team链路聚合介绍1.Teaming技术简介1.Teaming技术就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟网卡;2.我们可以通过Teaming技术做链路聚合,实现不同网卡的网卡的负载均衡和冗余;2.网卡的bonding和Teaming技术1.一般在在RHE......