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.mfbz.cn/a/620445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【快捷上手】UnrealEngine 的 关卡流 LevelStreaming 的三种加载方式

关键词&#xff1a; Unreal Engine&#xff0c;UE&#xff0c; LevelStreaming&#xff0c;动态&#xff0c;关卡&#xff0c;加载&#xff0c;切换关卡&#xff0c;换地图&#xff0c;子地图&#xff0c;子场景&#xff0c;子关卡&#xff0c;分包加载&#xff0c;动态载入 …

IT服务台的演变趋势

在技术进步和用户期望变化的推动下&#xff0c;IT服务台正在经历重大变化。IT服务台的未来将主要受到以下趋势的推动&#xff1a; 先进的人工智能和认知技术 预计高级人工智能 &#xff08;AI&#xff09; 和认知技术在 IT 服务台中的集成度会更高。通过将 IT 服务台集成到 IT…

点是否在三角形内C++源码实现

原理 思路&#xff1a; 面积和&#xff1a; abc obcaocabo,应该有更简洁的方法&#xff0c;但是这个方法思路更简单 代码实现: 注意二维向量的叉乘后&#xff0c;是垂直于平面的向量&#xff0c;相当于z为0三维向量叉乘&#xff0c;所以只有z维度有值&#xff0c;xy0. flo…

BMS-HiL系统方案设计

系统集成了业内著名 NI 公司的软硬件平台。 系统设计采用分布式设计模式。主控上位机作为整个实验的管理者主要设计软件交互和 流程管理的业务&#xff1b;下位机主要业务为序列执行与设备调用&#xff0c;各模块详细测试方案如下所示。 系统搭建使用 PXI 系统技术&#xff0c;…

98%!汽车贷款行业合成身份欺诈案激增

近年来&#xff0c;合成身份欺诈者以汽车贷款行业为最大目标&#xff0c;导致 2023 年汽车贷款行业的欺诈尝试增加了 98%&#xff0c;损失高达 79 亿美元。Point Predictive 对 1.8 亿份贷款申请的研究发现&#xff0c;收入和就业信息不实、合成身份和信用洗白几乎占汽车贷款机…

vs2017编译libjpeg的32和64位的库

1.下载libjpeg源码&#xff1a;http://www.ijg.org/files/ 2. 我下载的版本是&#xff1a;jpegsr9c.zip 3. 解压jpegsr9c.zip &#xff0c;解压目录&#xff1a;D:\libjpeg\jpeg-9c 4. 将C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include目录下的Win32.Mak文件拷贝…

netty配置SSL、netty配置https(生产环境)

netty配置SSL、netty配置https&#xff08;生产环境&#xff09; 上一篇提到了如何在开发环境使用SSL&#xff1a;https://lingkang.top/archives/netty-pei-zhi-ssl 转自&#xff1a;https://lingkang.top/archives/netty-pei-zhi-https 那么netty如何使用可信任的证书呢&a…

排除对象属性序列化的三种方式

说明&#xff1a;在项目里&#xff0c;经常可以看到以下日志内容&#xff0c;将对象序列化后直接打印出来&#xff0c;观察对象数据&#xff0c;判断当前处理逻辑正确与否。 &#xff08;以下信息来自&#xff1a;https://www.tl.beer/randbankcard.html生成器&#xff0c;信息…

优秀的 Java 项目,代码都是如何分层的?

在Java中&#xff0c;常见的分层结构通常是基于MVC&#xff08;Model-View-Controller&#xff09;或者MVP&#xff08;Model-View-Presenter&#xff09;等设计模式。 1. 模型&#xff08;Model&#xff09;层 模型层主要负责处理数据的逻辑和操作&#xff0c;通常包括以下内…

大学c语言基础很差,能不能学51单片机?会不会很困难?

开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些51单片机学习方法和资料&#xff0c;让我不断提升自己&#xff0c;感谢帮助过我的人&#xff0c; 如大家和我一样…

小米/红米手机刷机错误:Missmatching image and device

报错&#xff1a; Missmatching image and device。 场景&#xff1a; 该解决方法只适用于手机是通过EMT解锁的。 解决方法&#xff1a; 打开刷机脚本&#xff0c;并注释检测脚本&#xff1a; 刷机脚本根据不同的刷机方式&#xff0c;选择编辑不同的脚本&#xff0c;例如&am…

地图在数字孪生中的7个价值,领导也得点头认可。

地图在数字孪生大屏中扮演着重要的角色&#xff0c;具有以下几个作用&#xff1a; 空间可视化 地图可以将数据在空间上进行可视化展示&#xff0c;将各种信息和指标与地理位置相结合。通过地图的展示&#xff0c;用户可以直观地了解数据在不同地区的分布情况&#xff0c;帮助…

Stable Diffusion拓展Deforum AI视频生成

X轴平移值Z轴位移3D翻转 透视翻转

使用System.Drawing进行几何图形绘制

1.概要 使用System.Drawing进行几何图形绘制 System.Drawing 是.NET框架中的一个命名空间&#xff0c;提供了基本的绘图功能&#xff0c;包括绘制几何图形&#xff08;如矩形、椭圆、线条等&#xff09;。它通常用于Windows Forms应用程序中的绘图。你可以使用 Graphics 类来…

企业级WEB服务Nginx安装

企业级WEB服务Nginx安装 1. Nginx版本和安装方式 Mainline version 主要开发版本,一般为奇数版本号,比如1.19Stable version 当前最新稳定版,一般为偶数版本,如:1.20Legacy versions 旧的稳定版,一般为偶数版本,如:1.18Nginx安装可以使用yum或源码安装,但是推荐使用源码编译安…

我是如何免费抵御一个多月的 DDos/CC 攻击的?

今天明月给大家详细分享一下我的博客是如何免费抵御了长达一个多月的 DDos/CC 攻击的&#xff0c;在【现在 DDos/CC 攻击门槛低的可怕&#xff01;】一文里明月就说过现在 DDos/CC 攻击几乎是没有门槛的&#xff0c;任何一个老鼠屎在群里看到你的博客都可以轻松便捷的发动一次 …

智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码)

智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码) 文章目录 智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码)文章概述源码设计文章概述 智能优化算法 | Matlab实现KOA开普勒优化算法(内含完整源码) 源码设计 %% clear all clc N=25; % Number of s…

瞬息全宇宙——穿越之旅终极教程,手把手教你做出百万点赞视频

最近一种叫“瞬息全宇宙”的视频火了&#xff0c;抖音一期视频百万赞&#xff0c;各个博主视频都在带瞬息全宇宙这个标签&#xff0c;于是就有很多朋友催我出教程了&#xff0c;在琢磨了几天之后&#xff0c;终于整出来了 教程包含了插件的安装&#xff0c;界面的讲解&#xff…

为什么说气膜是环保建筑呢—轻空间

气膜建筑&#xff0c;作为一种绿色环保建筑&#xff0c;其环保特性主要体现在以下几个方面&#xff1a; 1. 节约水资源&#xff1a; 气膜建筑在施工和运行过程中不需要大量水资源&#xff0c;与传统建筑相比&#xff0c;可以每年节约数万吨水资源。这种节约不仅有利于缓解水资源…

paddle ocr v4 2.6.1实战笔记

目录 效果图&#xff1a; 安装 模型权重是自动下载&#xff0c;如果提前下载会报错。 识别orc&#xff0c;并opencv可视化结果&#xff0c;支持中文可视化 官方原版预测可视化&#xff1a; 效果图&#xff1a; 安装 安装2.5.2识别结果为空 pip install paddlepaddle-gpu…