黑马程序员JavaWeb开发教程(后端部分---Maven高级) ---笔记分享

目录

Maven高级

分模块设计与开发​编辑

继承与聚合

继承

继承关系

版本锁定

属性配置

聚合

私服

场景

介绍

资源上传与下载

具体操作


Maven高级

分模块设计与开发

1. 创建 maven 模块 tlias-pojo ,存放实体类
A. 创建一个正常的 Maven 模块,模块名 tlias-pojo
B. 然后在 tlias-pojo 中创建一个包 com.itheima.pojo ( 和原来案例项目中的 pojo 包名一致 )
为什么包名com.itheima.pojo?

SpringBoot项目中的 @SpringBootApplication 注解,具有包扫描的作用,但是它只会扫描启
动类所在的当前包以及子包。
• 当前包: com.itheima , 第三方依赖中提供的包: com.example ( 扫描不到 )

C. 将原来案例项目 tlias-web-management 中的 pojo 包下的实体类,复制到 tlias-pojo 模块中
D. tlias-pojo 模块的 pom.xml 文件中引入依赖
E. 删除原有案例项目 tlias-web-management pojo 包【直接删除不要犹豫,我们已经将该模块拆
分出去了】,然后在 pom.xml 中引入 tlias-pojo 的依赖
2. 创建 Maven 模块 tlias-utils ,存放相关工具类
A. 创建一个正常的 Maven 模块,模块名 tlias-utils
B. 然后在 tlias-utils 中创建一个包 com.itheima.utils ( 和原来案例项目中的 utils 包名
一致 )
C. 将原来案例项目 tlias-web-management 中的 utils 包下的实体类,复制到 tlias-utils
块中
D. tlias-utils 模块的 pom.xml 文件中引入依赖
E. 删除原有案例项目 tlias-web-management utils 包【直接删除不要犹豫,我们已经将该模块
拆分出去了】,然后在 pom.xml 中引入 tlias-utils 的依赖
到此呢,就已经完成了模块的拆分,拆分出了 tlias-pojo tlias-utils tlias-web
management ,如果其他项目中需要用到 pojo ,或者 utils 工具类,就可以直接引入依赖。

继承与聚合

在案例项目分模块开发之后啊,我们会看到 tlias-pojo tlias-utils tlias-web-management
中都引入了一个依赖 lombok 的依赖。我们在三个模块中分别配置了一次。

如果是做一个大型的项目,这三个模块当中重复的依赖可能会很多很多。如果每一个 Maven 模块里面,我们都来单独的配置一次,功能虽然能实现,但是配置是比较繁琐 的。

继承

我们可以再创建一个父工程 tlias-parent ,然后让上述的三个模块 tlias-pojo tlias-utils、 tlias-web-management 都来继承这个父工程 。 然后再将各个模块中都共有的依赖,都提取到父工程 tlias-parent 中进行配置,只要子工程继承了父工程,依赖它也会继承下来,这样就无需在各个子工程中进行配置了。

继承关系

版本锁定
如果项目中各个模块中都公共的这部分依赖,我们可以直接定义在父工程中,从而简化子工程的配置。然而在项目开发中,还有一部分依赖,并不是各个模块都共有的,可能只是其中的一小部分模块中使用到了这个依赖。
比如:在 tlias-web-management tlias-web-system tlias-web-report 这三个子工程中,
都使用到了 jwt 的依赖。 但是 tlias-pojo tlias-utils 中并不需要这个依赖,那此时,这个依
赖,我们不会直接配置在父工程 tlias-parent 中,而是哪个模块需要,就在哪个模块中配置。
而由于是一个项目中的多个模块,那多个模块中,我们要使用的同一个依赖的版本要一致,这样便于项目依赖的统一管理。比如:这个jwt 依赖,我们都使用的是 0.9.1 这个版本。

那假如说,我们项目要升级,要使用到 jwt 最新版本 0.9.2 中的一个新功能,那此时需要将依赖的版
本升级到 0.9.2 ,那此时该怎么做呢 ?
第一步:去找当前项目中所有的模块的 pom.xml 配置文件,看哪些模块用到了 jwt 的依赖。
第二步:找到这个依赖之后,将其版本 version ,更换为 0.9.2
问题:如果项目拆分的模块比较多,每一次更换版本,我们都得找到这个项目中的每一个模块,一个一 个的更改。 很容易就会出现,遗漏掉一个模块,忘记更换版本的情况。
那我们又该如何来解决这个问题,如何来统一管理各个依赖的版本呢?
答案: Maven的版本锁定功能。

属性配置
我们也可以通过自定义属性及属性引用的形式,在父工程中将依赖的版本号进行集中管理维护。 具体语法为:

聚合

 

私服

场景

前面我们在讲解多模块开发的时候,我们讲到我们所拆分的模块是可以在同一个公司各个项目组之间进行 资源共享 的。这个模块的资源共享,就需要通过我们接下来所讲解的 Maven 的私服来实现。
在介绍什么是私服之前,我们先来分析一下同一个公司,两个项目组之间如何基于私服进行资源的共享。
假设现在有两个团队, A B A 开发了一个模块 tlias-utils ,模块开发完毕之后,将模块打
jar 包,并安装到了 A 的本地仓库。

那此时,该公司的 B 团队开发项目时,要想使用 tlias-utils 中提供的工具类,该怎么办呢? 对于
maven 项目来说,是不是在 pom.xml 文件中引入 tlias-utils 的坐标就可以了呢?

大家可以思考一下,当 B 团队在 maven 项目的 pom.xml 配置文件中引入了依赖的坐标之后, maven 是如何查找这个依赖的? 查找顺序为:
1). 本地仓库:本地仓库中是没有这个依赖 jar 包的。
2). 远程中央仓库:由于该模块时自己公司开发的,远程仓库中也没有这个依赖
因为目前 tlias-utils 这个依赖,还在 A 的本地仓库中的。 B 电脑上的 maven 项目,是不可能找得到 A
电脑上 maven 本地仓库的 jar 包的。 那此时,大家可能会有一个想法:因为 A B 都会连接中央仓库, 我们可以将A 本地仓库的 jar 包,直接上传到中央仓库,然后 B 从中央仓库中下载 tlias-utils 这个依赖。
这个想法很美好,但是现实很残酷。这个方案是行不通的,因为中央仓库全球只有一个,不是什么人都可以往中央仓库中来上传jar 包的,我们是没有权限操作的。
那此时, maven 的私服就出场了,私服其实就是架设在公司局域网内部的一台服务器,就是一种特殊的远程仓库。
有了私服之后,各个团队就可以直接来连接私服了。 A 连接上私服之后,他就可以把 jar 包直接上传到私服当中。我公司自己内部搭建的服务器,我是不是有权限操作呀,把jar 包上传到私服之后,我让B 团队的所有开发人员也连接同一台私服。连接上这一台私服之后,他就会根据坐标的信息,直接从私服当中将对应的jar 包下载到自己的本地仓库,这样就可以使用到依赖当中所提供的一些工具类了。这样我们就可以通过私服来完成资源的共享。
而如果我们在项目中需要使用 其他第三方提供的依赖,如果本地仓库没有,也会自动连接私服下载,如果私服没有,私服此时会自动连接中央仓库,去中央仓库中下载依赖,然后将下载的依赖存储在私服仓库及本地仓库中。

介绍

私服: 是一种特殊的远程仓库,它是架设在 局域网内 的仓库服务,用来代理位于外部的中央仓库,
用于 解决团队内部的资源共享与资源同步问题。
依赖查找顺序:
•本地仓库
•私服仓库
•中央仓库
注意事项: 私服在企业项目开发中,一个项目 / 公司,只需要一台即可(无需我们自己搭建,会使
用即可)。

资源上传与下载

资源上传与下载,我们需要做三步配置,执行一条指令。
第一步配置:在 maven 的配置文件中配置访问私服的用户名、密码。
第二步配置:在 maven 的配置文件中配置连接私服的地址 (url 地址 )
第三步配置:在项目的 pom.xml 文件中配置上传资源的位置 (url 地址 )
配置好了上述三步之后,要上传资源到私服仓库,就执行执行 maven 生命周期: deploy
私服仓库说明:
RELEASE:存储自己开发的 RELEASE 发布版本的资源。
SNAPSHOT:存储自己开发的 SNAPSHOT 发布版本的资源。
Central:存储的是从中央仓库下载下来的依赖。
项目版本说明:
RELEASE(发布版本 ) :功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中
RELEASE 仓库中。
SNAPSHOT(快照版本 ) :功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的
SNAPSHOT仓库中。
具体操作
配置完成之后,我们就可以在 tlias-parent 中执行 deploy 生命周期,将项目发布到私服仓库中。
通过日志,我们可以看到,这几个模块打的 jar 包确实已经上传到了私服仓库中(由于当前我们的项目是SNAPSHOT 版本,所以 jar 包是上传到了 snapshot 仓库中)
那接下来,我们再来打开私服来看一下:
我们看到,我们项目中的这几个模块,在私服中都有了。 那接下来,当其他项目组的开发人员在项目中,就可以直接通过依赖的坐标,就可以完成引入对应的依赖,此时本地仓库没有,就会自动从私服仓库中下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值