继承与聚合

聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
  • 聚合工程:通常是一个不具有业务功能的”空“工程(有且仅有一个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. django如何将查询结果的栏位和数值自动遍历出来

    在Django中,MT003HModel.objects.all() 返回的是一个 QuerySet 对象,你可以使用迭代器来遍历其中的每个对象,然后访问对象的属性来获取栏位和数值. 以下是一个简单的 ...

  2. 【VMware VCF】VMware Cloud Foundation Part 01:概述。

    VMware Cloud Foundation(简称 VCF)是 VMware 打造的一套用于 Software Defined Data Center(SDDC)软件定义数据中心的全栈云平台解决方案 ...

  3. C# 对象复制三种方法效率对比——反射、序列化、表达式树

    1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...

  4. Groovy 基于Groovy实现DES加解密

    groovy 3.0.7 DES加密简介 加密分为对称加密和非对称加密.非对称加密,加解密使用不同的密钥,如RSA:对称加密,加解密使用相同的密钥,如DES(Data Encryption Stand ...

  5. PHP现代化构建工具: 无需修改任何代码和扩展将你的ThinkPHP项目性能提高20倍

    我要分享一个令人激动的黑科技:PRipple 使用这个项目能够在无需修改任何代码且无需第三方扩展的前提下,将你的 Laravel 项目性能提高 20 倍.他仅仅依赖于PHP原生的 pcntl/posi ...

  6. ComfyUI插件:IPAdapter_plus(新版)节点

    ComfyUI插件:IPAdapter_plus(新版)节点 前言: 学习ComfyUI是一场持久战,而IPAdapter_plus是常用且便捷有效的风格迁移模型,可以通过提供参考图像去进行图像的生成 ...

  7. Gradle配置文件解析和使用Meven本地仓库

    Gradle配置文件 使用Gradle创建好项目之后,项目的根目录下会有一个build.gradle文件,该文件就是Gradle的核心配置文件 对应的信息: plugins { id 'java' } ...

  8. 利用Curl命令来发邮件的小工具

    一个利用curl来发送邮件的小工具 其实可以扩展出很多其它玩法 例如: 配合系统定时任务做系统状态监控,当满足一定条件自动发送邮件 或者和笔者一样,每次加班后懒得编辑邮件,就可以直接传入相应的参数来发 ...

  9. 最新SEO自动外链蜘蛛池工具促进百度快速收录使用方法介绍

    此工具集成市面上所有自动外链网站的资源链接,经过合并.去重.筛选.验证 总结出最终的外链资源 ,软件实时更新 本软件将您繁杂的外链推广转为自动化进行,并且加入站群的支持,您只需要将你的站群域名粘贴到软 ...

  10. 【Java】Vue-Element-Admin 嵌入Druid监控面板

    我看到若依做了Druid面板的嵌入,我自己的项目干脆也做一个 一.后台服务SpringBoot: Druid配置项: spring: datasource: url: jdbc:mysql://127 ...