继承与聚合

聚合

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

  

聚合工程开发步骤

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

<packaging>pom</packaging>

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

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

<modules>
<module>../maven_01_ssm</module>
<module>../maven_02_pojo</module>
<module>../maven_03_dao</module>
</modules>

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

继承

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

开发过程

  • 将聚合工程作为父工程,在父工程的pom配置文件中配置依赖关系(子工程将沿用父工程中的依赖关系)
<dependencies>

    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency> ... </dependencies>
  • 在父工程中配置子工程可选的依赖关系
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
  • 在子工程中配置当前工程所继承的父工程
<!--    定义该工程的父工程-->
<parent>
<groupId>com.cqupt</groupId>
<artifactId>maven_00_parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 填写父工程的相对路径-->
<relativePath>../maven_00_parent/pom.xml</relativePath>
</parent>
  • 在子工程中配置使用父工程中可选依赖的坐标
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>

子工程中使用父工程中的可选依赖时仅需提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突

子工程中还可以定义父工程中没有定义的依赖关系

聚合与继承的区别

作用

  • 聚合用于快速构建项目
  • 继承用于快速配置

相同点

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

Maven高级——继承与聚合的更多相关文章

  1. Maven的继承和聚合

    Maven的继承和聚合子项目的pom文件里通过<parent>节点来继承父项目 <parent> <groupId>com.tykj</groupId> ...

  2. Maven的继承与聚合——多模块开发

    一:Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块. 二:继承 ...

  3. maven pom继承与聚合

    一.POM聚合模块: 在分布式架构,分模块化开发中,每个某块可能都是一个单独的maven项目,能够独立的进行项目构架,当模块比较多时,可以使用maven聚合聚合项目来简化maven构建,一次构建多个项 ...

  4. Maven项目继承与聚合

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628534.html  一:继承 在Java编程中,如果多个类都使用到了相同的内容.方法时,我们可以用继承的方 ...

  5. Maven详解之聚合与继承

    说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...

  6. maven之详解继承与聚合

    说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...

  7. Maven详解 之 聚合与继承

    说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...

  8. (转)Maven学习总结(五)——聚合与继承

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(五)——聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <mod ...

  9. maven中的继承和聚合的关系

    maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></mo ...

  10. maven 依赖(依赖范围,聚合,继承等)

    目录: 1.什么是依赖? 2.依赖的管理:依赖的范围与传递,依赖的排除,依赖的原则(maven对依赖冲突的处理原则) 3.依赖的版本管理 4.继承与聚合 1.什么是依赖? 简单的讲,当jar包A需要j ...

随机推荐

  1. 【译】使 Visual Studio 更加可视化

    任何 Web.桌面或移动开发人员都经常使用图像.你可以从 C#.HTML.XAML.CSS.C++.VB.TypeScript 甚至代码注释中引用它们.有些图像是本地的,有些存在于线上或网络共享中,而 ...

  2. JavaWeb编写登录注册案例并把数据插入MySQL数据库中

    小白学习了这么久的java,第一次上手编写一个完整的登录以及注册案例,麻雀虽小五脏俱全!!!! 案例: 登录和注册 第一:所需创建的包以及相关类 1,domain包(也就是平时所说的Javabean) ...

  3. Jmeter函数助手13-threadGroupName

    threadGroupName函数获取当前线程组的名称.该函数没有参数,直接引用即可. 1. 返回当前线程组的名称

  4. 【RabbitMQ】14 集群搭建

    多服务器单实例 -- 参考博客: https://www.cnblogs.com/lixioayi/articles/9993658.html 首先要找到cookie文件,所有实例要保持cookie一 ...

  5. 【Linux】Re02

    一.运行启动级别 0 关机 1 单用户 2 多用户状态没有网络服务 3 多用户状态存在网络服务 4 系统未使用保留给用户 5 图形界面 6 重启 命令: init [0 - 6] 图形化界面级别需要对 ...

  6. 【Linux】Re01

    一.三种网络模式 https://www.bilibili.com/video/BV1Sv411r7vd?p=7 1.桥接模式 该虚拟机和宿主机同一网段,和外部网络相通,但是占用网段地址资源,IP分配 ...

  7. 【Spring-Security】Re02 基础认证流程

    一.权限认证模拟操作: 编写Security配置类: package cn.zeal4j.configuration; import org.springframework.context.annot ...

  8. 全球首颗车规5纳米 高性能智驾芯片蔚来神玑NX9031 流片成功

    地址: https://weibo.com/tv/show/1034:5060774108790867 https://www.bilibili.com/video/BV1JG411r7LR/

  9. 2024年 智能机器人元年 —— 国内的智能机器人(humanoid)公司当下最大的压力(最为急迫的任务)是什么?

    可以说,2024年是人形机器人的元年.我国在去年年底将发展智能机器人立为了第一线的重要科技发展方向,并计划在2024年.2025年建立出完整的产业链条,并培育出几家成熟的行业领先的智能机器人公司.而我 ...

  10. ( Ubuntu环境下 ) Vim插件管理器 Vundle 的安装

    为vim安装插件的时候一般会选择先安装一个插件管理器,  一般有 Pathogen和Vundle 比较常用,同时也有比较轻量级的   Vim插件管理神器vim-plug . 1.   下载  Vim插 ...