Maven:继承和聚合

Maven高级

分模块设计和开发

如果在我们自己的项目中全部功能在同一个项目中开发,在其他项目中想要使用我们封装的组件和工具类并不方便

不方便项目的维护和管理
项目中的通用组件难以复用

所以我们需要使用分模块设计

分模块设计

请添加图片描述

在项目设计阶段,可以将大的项目拆分成若干模块,按功能拆分,每个模块都是独立的.

先针对模块功能进行设计,再进行编码.

方便项目的管理和维护
方便模块间的相互调用和资源共享

分模块设计的优势

如果直接对项目进行依赖,因为会将所有工具类全部依赖进来,会影响性能,同时相当于整个业务代码全部公开,非常不安全.

继承

创建一个父工程,让其他模块对其进行继承,这样就可以将各个模块中共有的依赖都提取到父工程中进行配置,这样子工程都会继承父工程的依赖.

继承关系

Maven不支持多继承

因为Spring工程存在统一的父工程spring-boot-starter-parent

如果继承spring-boot-starter-parent就无法继承我们自定义的父工程tlias-parent

所以我们可以将统一父工程交给父工程去继承,如下所示

请添加图片描述

注:父工程打包的方式必须为pom

<packaging>pom</packaging>
Maven的打包方式

jar:默认打包方式,内嵌tomcat运行

war:普通web程序的打包方式,需要部署在外部的tomcat服务器中运行

pom:父工程或聚合工程,不写代码仅进行依赖管理

父子工程结构

可以同级也可以将子工程写在父工程下

版本锁定

当一个依赖不是被所有模块使用时,我们没有必要将其添加到

<dependencies></dependencies>

中,可以使用

<dependencyManagement></dependencyManagement>

进行统一的依赖版本管理,不会使依赖被所有子工程引用,同时使需要这些依赖的子模块引用更方便,版本统一.

<properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><jjwt.version>0.9.1</jjwt.version>
</properties><dependencyManagement><dependencies><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency></dependencies>
</dependencyManagement>

在父工程中的中指定版本,通过在

<properties></properties>

中我们可以将版本抽取成变量,格式如上所示,这个版本变量${…}可以直接在父工程和子工程中使用.

通过这样的版本统一设置,我们就可以在子工程中无需设置版本,只需要groupId和artifactId就可以进行依赖

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId>
</dependency>

聚合

对有继承关系的多个工程进行打包时,关系错综复杂,是可能出现问题的(找不到依赖,找不到模块等等),需要先将子模块先执行install到本地仓库,再对父模块进行打包.

如果使用maven的聚合

就可以实现对项目的一键构建(清理,编译,测试,打包安装等)
聚合:将多个模块组织成一个整体,同时进行项目的构建

无需根据依赖关系手动构建,可以直接在聚合工程上构建

聚合工程:一个不具有业务功能的"空"工程(有且仅有一个pom文件),其中没有代码,一般就是继承关系中的父工程

聚合的实现

在聚合工程中的pom文件中,在modules标签中对模块进行整合

<modules><module>../tlias-pojo</module><module>../tlias-utils</module><module>../tlias-web-management</module>
</modules>

聚合之后子模块会在聚合在聚合工程下

只要对聚合工程执行package打包命令就会对聚合的所有模块执行打包命令,即一键构建.

继承和聚合的对比

聚合用于快速构建项目

继承用于简化依赖的配置和统一管理依赖

相同点

聚合和继承的pom文件打包方式均为pom,聚合工程和继承的父工程往往为同一个工程

聚合和继承都属于设计型模块,并无实际模块内容

不同点

聚合是在聚合工程中进行关系配置,可以感知到参与聚合的模块(modules中写明了参与聚合的模块)

继承是在子模块中进行配置(写明parent),父模块无法感知到哪些子模块继承了自己

私服

快照版本(snapshot):存入快照仓库

不断的开发更新,可以对同一个快照版本进行多次发布

<version>1.0-SNAPSHOT</version>

发布版本(release):存入发布仓库

相对稳定的对外版本

<version>1.0</version>

Central仓库

存储从中央仓库下载的依赖

快照版会用最新版本覆盖

发布版不会被覆盖

私服配置

在本地maven的设置中配置依赖下载地址

在本地maven的设置中配置私服的访问用户名和密码

在maven工程pom文件中配置上传地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/325353.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网杀虫灯—新型的环保杀虫设备

型号推荐&#xff1a;云境天合TH-FD2S】物联网杀虫灯是一种新型环保杀虫设备&#xff0c;其中风吸式太阳能杀虫灯作为其一种特殊类型&#xff0c;展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源&#xff0c;白天储存电源&#xff0c;晚上为杀虫灯提供电…

spsr 的恢复出错,导致 thumb 指令集的 it 条件运行指令运行异常,清晰的调试思路帮助快速解决问题

记一次调试过程 这是一个在 arm 架构上的 RTOS 上的调试过程。问题现象为使用 thumb 指令集的 libgcc 库的情况下&#xff0c;浮点运算随机出错。经过一番追踪调试&#xff0c;逐步缩小问题范围&#xff0c;最后定位问题&#xff0c;成功解决。 场景 在某款的国产 RTOS 上&a…

使用Flask构建POST请求的Web应用

文章目录 准备工作创建路由处理POST请求创建表单页面运行应用结论 在Web开发中&#xff0c;处理POST请求是一项常见任务&#xff0c;特别是在构建表单提交、用户注册和数据提交等功能时。Flask是一个简单而强大的Python Web框架&#xff0c;它提供了方便的工具来处理HTTP请求&a…

Spring编程使用DDD的小把戏

场景 现在流行充血领域层&#xff0c;在原本只存储对象的java类中&#xff0c;增加一些方法去替代原本写在service层的crud&#xff0c; 但是例如service这种一般都是托管给spring的&#xff0c;我们使用的ORM也都托管给spring&#xff0c;这样方便在service层调用mybatis的m…

数据结构绪论

1.数据&#xff1a;是客观事物的符号表示&#xff0c;是一切能够输入到计算机中&#xff0c;并被计算机处理的符号的总称。 数据元素&#xff1a;数据的基本单位。 数据项&#xff1a;是数据元素中独立的&#xff0c;最小的单位。 数据对象&#xff1a;是性质相同的数据元素…

OSTE-Web-Log-Analyzer:基于Python的Web服务器日志自动化分析工具

关于OSTE-Web-Log-Analyzer OSTE-Web-Log-Analyzer是一款功能强大的Web服务器日志自动化分析工具&#xff0c;该工具专为安全研究人员设计&#xff0c;能够使用Python Web日志分析工具&#xff08;Python Web Log Analyzer&#xff09;帮助广大研究人员以自动化的形式实现Web服…

云动态摘要 2024-05-12

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

Linux学习笔记7---仿STM32自建寄存器库

为了开发方便&#xff0c;ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件&#xff0c;在这个文件里面定义了 STM32F103 所有外设寄存器。而有些芯片是没有这种寄存器库的&#xff0c;在没有的情况下要学会自己建立一个寄存器库。NXP 官方并没有为 I.MX6UL 编写类似 st…

Linux与windows网络管理

文章目录 一、TCP/IP1.1、TCP/IP概念TCP/IP是什么TCP/IP的作用TCP/IP的特点TCP/IP的工作原理 1.2、TCP/IP网络发展史1.3、OSI网络模型1.4、TCP/IP网络模型1.5、linux中配置网络网络配置文件位置DNS配置文件主机名配置文件常用网络查看命令 1.6、windows中配置网络CMD中网络常用…

springboot中mybatisplus注意事项

使用代码生成工具CodeGenerator 需要修改的内容 dsc.setUsername(“root”); mysql账号dsc.setPassword(“root”); mysql密码strategy.setInclude(“crm_edu”); 表名pc.setModuleName(“eduservice”); //模块名 package com.test.demo;import com.baomidou.mybatisplus.a…

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动传递的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应…

面向电商家居行业3D室内场景合成中的空间感知

本文主要介绍了3D场景合成技术在电商领域&#xff0c;尤其是家居家装行业的应用。它解释了如何使用3D场景合成创建逼真的室内设计&#xff0c;让消费者能够交互式地查看和体验产品&#xff0c;提高购物的趣味性和效率。文章提到了两种主要的3D室内场景生成算法&#xff1a;传统…

Electron | 桌面应用的开发神器

初探 Electron 教程将介绍 Electron 打包应用的全过程&#xff0c;从本地测试&#xff0c;打包&#xff0c;到 GitHub 自动化。讲解 Electron Forge 和 Electron Builder 的用法&#xff0c;以及如何在 GitHub Actions 中自动化生成和发布应用。 官方资源 Electron Document…

Vue.js【路由】

初识路由 提到路由&#xff08;Route&#xff09;&#xff0c;一般我们会联想到网络中常见的路由器&#xff08;Router&#xff09;&#xff0c;那么路由和路由器之间有什么关联呢&#xff1f;路由是指路由器从一个接口接收到数据&#xff0c;根据数据的目的地址将数据定向传送…

Linux开发--Linux内核开发移植

Linux内核开发移植 Linux内核版本变迁及其获得 Linux是最受欢迎的自由电脑操作系统内核&#xff0c; 是一个用C语言写成&#xff0c; 并且符合POSIX标准的类Unix操作系统 Linux是由芬兰黑客Linus Torvalds开发的&#xff0c; 目的是尝试在英特尔x86架构上提供自由免费的类Un…

IDEA及Maven配置代理及Maven中央仓库配置详解

一、配置代理 首先&#xff0c;需要本地开启代理入口&#xff0c;如图。 这个跟你使用代理软件有关。像我使用的是qv2ray。 其次&#xff0c;idea配置代理&#xff0c;如图。 1.1 idea配置代理 打开Settings&#xff0c;如图 1.2 maven配置代理 maven配置代理&#xff0c;修…

[单机]完美国际_V155_GM工具_VM虚拟机

[端游] 完美国际单机版V155一键端PC电脑网络游戏完美世界幻海凌云家园 本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人亲自搭建成功的&#xff0c;绝对是…

易图讯三维电子沙盘-大数据处理服务

易图讯科技10名高级大数据工程师&#xff0c;高效、快速进行POI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 免费专业提供POI、AOI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 1年更新2次POI、高清卫星影像。

Unity基础

概述 基础知识 3D教学 数学计算公共类Mathf 练习: 三角函数 练习&#xff1a; Unity中的坐标系 Vector3向量 向量模长和单位向量 向量加减乘除 练习&#xff1a; 向量点乘 向量叉乘 向量插值运算 Quaternion四元数 为何要使用四元数 四元数是什么 四元数常用方法 四元数计算 练…

怎么制作流程图?介绍制作方法

怎么制作流程图&#xff1f;在日常生活和工作中&#xff0c;流程图已经成为我们不可或缺的工具。无论是项目规划、流程优化&#xff0c;还是学习理解复杂系统&#xff0c;流程图都能帮助我们更直观地理解和表达信息。然而&#xff0c;很多人可能并不清楚&#xff0c;其实制作流…