
目录
一、分模块设计与开发
1、为什么要分模块设计?
2、实践:分模块开发
①、实现步骤
3、小结
二、继承与聚合
继承
1、继承关系
①、为什么要在Maven工程中实现继承?
②、继承关系实现
③、继承实现小结
④、maven项目父子工程结构说明
2、版本锁定
①、什么是版本锁定 & 为什么进行版本锁定?--(统一管理依赖的版本号)
②、自定义属性/引用属性
③、思考: 与 的区别是什么?
聚合
1、为什么要聚合?
2、聚合功能的实现
3、小结(继承与聚合的异同点)
三、私服
1、介绍
2、资源上传与下载
①、仓库介绍(2种类型)
②、资源上传与下载实现
③、本地私服
④、小结
一、分模块设计与开发
1、为什么要分模块设计?
如果不进行分模块设计,会导致项目不便维护、难以复用

所以,答案就在眼前,我们要对项目进行分模块设计:(这样更加便于项目的维护和管理)

2、实践:分模块开发

①、实现步骤

示例:
| Ⅰ、正常创建一个Maven模块即可,创建tlias-pojo: | 
| 
 | 
| Ⅱ、将之前案例中的pojo的所有代码复制到tlias-pojo模块中:(如有报错,需要自行修改、引入依赖) | 
| 
 | 
| Ⅲ、在拆分的原项目tlias-web-management中的pom.xml文件中引入tlias-pojo依赖: | 
| 
 | 
| Ⅳ、创建tlias-utils模块: | 
| 
 | 
| Ⅴ、拷贝utils文件到tlias-utils模块,并引入对应依赖(JWT): | 
| 
 | 
| Ⅵ、在原项目tlias-web-management中的pom.xml文件中引入tlias-utils依赖: | 
| 
 | 
3、小结

二、继承与聚合

继承
1、继承关系
Maven工程之间也可以实现继承关系

示例:(所有的SpringBoot工程都有一个统一的父工程:Spring-boot-starter-parent)

①、为什么要在Maven工程中实现继承?

如上图所示,在上一节中,我们将项目分成了三个模块,但三个模块都共同使用了 lombok 这个依赖,后面随着项目开发的逐渐复杂,重复的依赖会越来越多,Maven的继承就是来解决这个问题的。
②、继承关系实现
在Maven当中,一个工程只能继承一个父工程,正如类与类之间只能单继承,但支持多重继承,即 A继承B,B继承C

示例:
| Ⅰ、创建父工程模块 tlias-parent: | 
| 
 | 
| Ⅱ、tlias-parent的打包方式设置为pom,并指定继承: | 
| 
 由于tlias-parent是作为一个父工程来使用的,所以里面不会写任何的Java代码,所以模块中的src文件可以直接删掉: 
 | 
| Ⅲ、在子工程tlias-web-management中指定继承: | 
| 
 | 
| Ⅳ、在 tlias-pojo 以及 tlias-utils 中添加一样的父继承指定: | 
| 
 | 
| Ⅴ、在父工程(tlias-parent)中配置各个模块共有的依赖:(如 lombok) | 
| 
 | 
③、继承实现小结
Ⅰ、创建Maven模块tlias-parent,该工程为父工程,设置打包方式pom:

Ⅱ、在子工程的pom.xml文件中,配置继承关系:

Ⅲ、在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)

一般情况下,如果我们在父工程中配置了这个依赖,那么我们在子工程中就不用再配置这个依赖了
④、maven项目父子工程结构说明
两种都可以使用,只是第二种会显得更加清晰:

2、版本锁定
①、什么是版本锁定 & 为什么进行版本锁定?--(统一管理依赖的版本号)
共有依赖可以定义在父工程中,但并不是所有的依赖都是共有的,有的依赖是某个模块所独有的,那么我们就需要在这个模块中单独引入该依赖,并且,我们还要保证这些模块的依赖版本一致:解决这个问题的方法就是版本锁定。

示例:(我们可以在父工程中对JWT依赖使用<dependencyManagement>进行依赖版本的管理)

注意:在父工程中的<dependencyManagement>标签中进行版本号管理的依赖并不会被子工程自动引入,在子工程中还是需要手动引入这个依赖才行,只不过无需再指定版本号了。
②、自定义属性/引用属性
在<propeties>标签中可以自定义属性标签,我们可以利用这个功能来进行版本号的统一管理:

示例:

③、思考:<dependcyManagement> 与 <dependencies> 的区别是什么?

聚合
1、为什么要聚合?

对模块的打包过程:
| 在上一个例子中,如果我们在tlias-web-management模块中进行package操作,会出现以下错误:BUILD FAILURE 
 | 
| 这是由于我们没有安装 tlias-pojo 以及 tlias-utils 这两个模块,我们可以对其进行 install 操作: | 
| 
 | 
| 之后,我们再对tlias-web-management模块中进行package操作,结果还是 BUILD FAILURE 
 | 
| 报错:找不到tlias-parent,我们对这个父工程tlias-parent也进行install操作,此时再对tlias-web-management模块中进行package操作,即可 BUILD SUCCESS | 
| 
 | 
从上面的操作,我们可以看出,我们通过普通的方式来对一个分模块的项目进行打包,过程变得过于麻烦,我们对主项目进行打包,需要分别将其它模块进行 install 才行,而 Maven 的聚合功能就是要解决这个问题的,让你轻松一键构建项目编译,一键打包,一键安装等等。

2、聚合功能的实现

示例:
| Ⅰ、在tlias-parent的pom文件中聚合其它模块: | 
| 
 | 
| Ⅱ、以对tlias-parent生命周期的clean操作为例: | 
| 
 聚合之后,所有模块都会执行该操作 | 
3、小结(继承与聚合的异同点)

三、私服

1、介绍
原因:Maven的中央仓库,需要联网,全球唯一,且由maven官方维护,那么要想解决团队资源共享问题:我们可以搭建私服

在正常开发中,我们只要学会如何在私服中上传jar包,以及如何从私服中下载依赖即可
2、资源上传与下载

①、仓库介绍(2种类型)
| 该仓库存储的就是从中央仓库中下载下来的jar包 | 
| 
 | 
| 而下面的两个仓库,存放的都是项目组内部共享的资源 | 
| 
 两个仓库的原因和项目版本有关: 
 | 
②、资源上传与下载实现
将自己写的模块打成jar包上传到私服:
| 
 (1)设置私服的访问用户名/密码(settings.xml中的servers中配置) 
 (2)IDEA的maven工程的pom文件中配置上传(发布)地址: 
 
 (3)设置私服依赖下载的仓库组地址(settings.xml中的mirrors、profiles中配置) 
 
 在项目中的pom.xml文件添加以下内容: 
 
 | 
| 具体内容可以参考私服配置文档: 
 
 对项目执行deploy: 
 
 执行结果: 
 
 新打开一个maven项目,测试是否可以将上传到私服的jar包下载下来: 
 
 | 
③、本地私服

④、小结


















































![[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)](https://img-blog.csdnimg.cn/acc14837830946dcb0661209f9f4737f.png)