Maven高级(继承与聚合+私服)

news2024/12/23 13:53:18

分模块设计和开发

为什么要分模块设计?
一个项目往往是分为好几个模块的
如果不同模块全写在一个项目里面
所有的程序员都要调用这有个项目就难以维护
在这里插入图片描述
在这里插入图片描述
比如我们之前设计的板块
就不太合理,现在我们把实体类和对应的工具类单独开出两个maven模块存储
然后让我们的主功能类依赖这两个模块,这样更安全,也更方便
在这里插入图片描述
在这里插入图片描述

新建两个maven项目,因为这些类本身我们的功能类,不用启动服务器,所以就创建maven项目即可
在这里插入图片描述
然后把pojo包放到同名对应的包下,把原项目的pojo包进行删除
然后让原项目依赖新建的模块即可
在这里插入图片描述
新建utils的maven项目
在这里插入图片描述
把对应的依赖改改就差不多了和上面的pojo同理
在这里插入图片描述

继承

前面三个项目都设计到lombok依赖
这样一直重复的写,代码复用性太低
maven项目之间的继承能解决这个问题
我们只需要创建一个maven父工程,让maven子工程进行继承
子工程中相同的依赖写入到父工程中
子工程会继承对应的配置信息!
这也是Spring的起步依赖的原理
在对应的pom.xml里用parent标签来指定父工程

在这里插入图片描述

像我们SpringBoot的统一的父工程
spring-boot-starter-parent
在这里插入图片描述

实现

问题1
打包方式设置成pom类型
在pom文件里怎么设置即可
在这里插入图片描述

如图右上角有常用打包方式说明
在这里插入图片描述
问题2
maven当中只能单继承
但我们的tails-web-management一级继承了springboot的项目
但是maven可以多重继承
可以让父工程继承Springboot即可

然后就把共有的依赖放入父工程即可
在这里插入图片描述
配置父工程的时候会有一个
relativePath标签,指代的是父工程的相对路径(到pom文件的位置)
在这里插入图片描述
正常这样不写的话,是直接从本地仓库查找
这样写
在这里插入图片描述
在这里插入图片描述

还有就是,子工程继承复工成的话,groupID如果和父工程相同就不用写了
会自动继承,当然你想要不同的话,还是要写的

小结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

版本锁定

就是这个依赖还可以起到版本统一个锁定的效果
正常的话 我们模块拆分很多需要一个一个修改依赖的版本(一个项目的模块依赖的版本肯定要一样)
但是可以通过父工程的dependencyManagement来统一管理依赖版本
注意:dependencyManagement只管理依赖的版本,不会添加依赖到子工程
在这里插入图片描述

在这里插入图片描述
这个标签只是子工程里有这个依赖时进行版本的管理
而不是把依赖继承给子工程

进一步简化
就是我们的父工程
如果依赖比较多,会有大量的依赖且版本号分散比较零散,不便于查看
我们可以将对应的版本号,封装到一个自定义属性标签中
在对应的版本号里面用${}即可引用properties里面的标签名,最终写入的是标签里面的文本
在这里插入图片描述
这样的话更改对应的配置项即可
不用一个一个往下找,方便我们去管理和维护
在这里插入图片描述
在这里插入图片描述

聚合

我们的项目中
web-mangment依赖这pojo和utils两个模块
当我们需要打包项目上线的时候
在这里插入图片描述
会出现找不到对应jar包的错误
因为他会先去本地仓库找这两个jar包
在这里插入图片描述
但是默认的话它是不会自动安装的
需要我们手动用maven的install功能
安装完毕两个子工程,并且安装对应的父工程
tails-parent
然后再打包才能完成打包操作
在这里插入图片描述

可以发现这个过程挺繁琐的
so我们需要maven聚合来解决这个麻烦
聚合能让我们实现一键编译,一键打包,一键安装等等

实操

一般我们需要一个聚合项目
这个项目介绍空工程,和我们的父工程很匹配
巧了,一般开发中我们的父工程同时也是聚合工程
当我们安装聚合工程到本地仓库
他下面的工程全会安装到本地仓库,这就是聚合
在这里插入图片描述
而且
他会根据对应工程的依赖关系自动的设置对应的构建顺序
我们只需要在聚合工程(父工程)里面设置modules标签
把对应的需要聚合的工程写到module标签里即可
但是无是要在对应的聚合工程里进行操作的啊,会把底下的全部都打包一遍(聚合工程不会进行操作,但是module对应的工程会进行聚合工程进行的操作)
在这里插入图片描述
在这里插入图片描述

继承与聚合总结

在这里插入图片描述

maven私服

B用A开发jar包
按理来说A上传到中央仓库B就可以依赖
但是中央仓库不是谁想上传就能上传的,所以我们需要私服
在这里插入图片描述
在这里插入图片描述
学习就是学习私服的使用拉
搭建这事目前咱还到不了那么高的高度

资源上传私服和下载

这是我们提前搭建好的私服
在这里插入图片描述
资源上传
IDEA里面指定上传资源的url地址
然后再maven的配置文件里,指定我们的私服的用户名和密码进行操作(权限操作)
资源上传先是install操作上传到本地仓库,然后deploy操作上传到私服
下载的话
需要知道私服的位置,在maven的配置文件配置私服的位置
还有私服分三个的意思是:central就是代表从中央仓库下载的jar包,而上面两个是我们自己的资源,至于这两个不同,看下图绿色字幕(主要和我们开发项目版本有关)
在这里插入图片描述
具体的话
就是我们的模块后面版本有SNAPSHOT的话就存储在SNAPSHOT(默认创建模块就是带这个后缀的)
只要是没有这个后缀就会存储在Release仓库里
在这里插入图片描述
步骤开始
1.设置访问私服的密码和用户名(这里是两个一个是快照仓库,一个是发行仓库)
注意:要在maven的settings.xml(文件夹里的)里的servers标签里面进行设置
在这里插入图片描述
2.设置上传地址是在maven工程的pom.xml配置的
也是两个版本的
在这里插入图片描述
3.配置私服(仓库组)的地址(maven的setting.xml里面配置)
所谓仓库组就是把几个仓库组合一下,只写一个地址即可(比如我们的那三个仓库)
在这里插入图片描述

使用私服挺固定的就是这三步操作
上网查一下都行
两个id记得对应
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装openai和简单使用

Anaconda的界面创建open ai环境,选择python10 控制台 #或者 conda info -e 注意不是anaconda命令开头 (base) C:\Users\su>conda env list # conda environments: # base * F:\anaconda3 openai F:\anaconda3\envs\opena…

TCP的拥塞控制、提高网络利用率的方法【TCP原理(笔记四)】

文章目录 拥塞控制慢启动 提高网络利用率的规范Nagle算法延迟确认应答捎带应答 拥塞控制 有了TCP的窗口控制,收发主机之间即使不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包。然而,如果在通信刚开始时就发送大量数据&#x…

新能源汽车交流充电桩CP信号详解

随着新能源汽车的推广,交流充电桩迎来了巨大的市场需求,人们对车辆充电的便利性、安全性有着越来越高的要求。CP信号主要用于交流充电桩,充电桩和汽车之间只能通过CP信号进行通讯,判断、控制充电电流和状态。 汽车充电桩CP信号…

QT之自定义表格控件

继承QWidget来绘制的一款自定义控件,设计原因是因为Qt自带的QTableWidget的大批量操作很卡,特别是在嵌入式设备上时。 该控件特色功能: 1、支持拖动自适应。 2、支持各种颜色,字体,行列数设置。 代码如下: …

win10安装cuda11.4及cudnn

查看nvidia驱动版本 在windows终端键入nvidia-smi,查看nvidia显卡驱动。显卡驱动的版本决定了CUDA的版本下限。 如果出现上述的问题,则终端进入C:\Program Files\NVIDIA Corporation\NVSMI文件夹内,再键入nvidia-smi,可以看到我…

[MySQL]MySQL视图特性

[MySQL]MySQL视图特性 文章目录 [MySQL]MySQL视图特性1. 视图的概念2. 视图的基本操作创建视图删除视图 3. 视图规则和限制 1. 视图的概念 视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。基表是对…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

数据库备份mysqldump、mydumper、xtrabackup

数据库备份&#xff0c;数据库为school&#xff0c;素材如下 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );创建sco…

《面试1v1》如何提高远程用户的吞吐量

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

FPGA配置文件从串并模式下载

FPGA配置文件的下载模式有5种&#xff1a; 主串模式&#xff08;master serial&#xff09;从串模式&#xff08;slave serial&#xff09;主并模式&#xff08;master selectMAP&#xff09;从并模式&#xff08;slave selectMAP&#xff09;JTAG模式 其中&#xff0c;JTAG模…

SQL 常见函数整理 _ SOUNDEX() 和 DIFFERENCE()

SOUNDEX() 1. 用法 是一种针对字符串进行音似匹配的函数。它将一个字符串作为输入&#xff0c;并返回一个代表该字符串音似编码的字符串。此编码可用于比较和匹配具有相似发音的字符串。 2. 基本语法 SOUNDEX(expression)其中&#xff0c;expression 是要进行音似编码的字符串…

后端排序优化——谁调用,谁排序

前言 为了使排序更加灵活&#xff0c;建议后端排序可以优化为“谁调用谁排序”。 代码实现 数据库设计 以学生表为例。 前端查询条件为姓名&#xff0c;住址。 Controller 简化后的controller层代码如下&#xff1a; /*** queryStudent[查询学生]* param name 姓名* param …

SQL优化——update优化

1.update优化 执行update语句的时候一定要根据索引字段进行更新&#xff0c;否则就会出现行锁升级为表锁的情况&#xff0c;锁住整张表&#xff0c;一旦锁表了并发性能就会受影响。 2.总结 sql优化事实上都是对索引进行优化

【Git】—— 解决分支合并冲突

在实际分⽀合并的时候&#xff0c;并不是想合并就能合并成功的&#xff0c;有时候可能会遇到代码冲突的问题。 为了演⽰这问题&#xff0c;创建⼀个新的分⽀ dev1 &#xff0c;并切换⾄⽬标分⽀&#xff0c;我们可以使⽤ git checkout - b dev1 ⼀步完成创建并切换的动作…

网卡收发包系统结构收发包流程,tcp/ip协议,socket套接字缓冲区,滑动窗口,mtu/mss

MTU和MSS的区别 MTU和MSS的区别 TCP 的 MTU & MSS MTU是在那一层&#xff1f;MSS在那一层&#xff1f; MTU是在数据链路层的载荷大小也就是传给网络层的大小&#xff0c;mss是在传输层的载荷大小也就是传给应用层的大小 mss是根据mtu得到的 1、MTU&#xff1a; Maximu…

矩阵置零(力扣)思维 JAVA

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 输入&#xff1a;matrix [[0,1,2,0],[3,4,5,2],[…

Django项目之模型

Django项目之模型 创建环境配置连接MySQL数据库创建表单注册模型Django模型类查询模型类的条件查询聚合函数 创建环境 创建Django项目&#xff0c;创建usersapp&#xff0c;并在setting.py中注册 项目工作目录 配置连接MySQL数据库 修改/Djweb/Djweb/setting.py中DATABASE…

netty知识集锦2

粘包半包 粘包半包解决方案&#xff0c; 1短链接&#xff0c;它的消息边界是从链接建立到链接断开 2.定长解码器&#xff1a;服务器端选最大长度的消息作为定长&#xff0c;客户端不足补齐&#xff0c;缺点造成浪费 netty协议设计与解析 Message编码解码

[DASCTF 2023 0X401七月暑期挑战赛] REV1 controlflow复现

这东西没怎么研究过&#xff0c;不过很多人都完成了&#xff0c;不过这种比赛有很多应该是拿的别人的wp&#xff0c;所以减去些水份&#xff0c;赛后拿到一个wp是人c程序实现的。然后根据原代码还原一下加密流程。 首先是main 这里比较特殊&#xff0c;一开始的3个变量明显是加…

VS2010打开VC6工程进行调试时的问题解决方法

VS2010打开VC6工程进行调试时的问题解决方法 在工程属性页&#xff0c;“配置属性—链接器—输入—忽略特定默认库” 中添加编译时提示无法找到的几个lib库&#xff0c;如下图所示