分模块设计和开发
为什么要分模块设计?
 一个项目往往是分为好几个模块的
 如果不同模块全写在一个项目里面
 所有的程序员都要调用这有个项目就难以维护
 
 
 比如我们之前设计的板块
 就不太合理,现在我们把实体类和对应的工具类单独开出两个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记得对应
 





![[MySQL]MySQL视图特性](https://img-blog.csdnimg.cn/img_convert/17636659840f4d197e8c2e90414aee99.png)












![[DASCTF 2023  0X401七月暑期挑战赛] REV1 controlflow复现](https://img-blog.csdnimg.cn/8caa349b0a3b44f2b326586e84ceea51.png)
