分模块设计与开发
介绍
将项目按照功能拆分成若干个子模块,方便项目管理维护,扩展,也方便模块间的互相调用,资源共享
分模块开发的好处
- 增强代码的复用性:一些通用的工具类,实体类可以抽取到独立的模块,进行重用
- 便于分工:按业务划分模块可以让开发人员编写代码更为独立,互不干扰
- 对maven项目来讲,一些通用的依赖,插件,可以抽取到父模块,简化配置
分模块开发步骤
- 创建父模块
- 创建子模块
- 配置模块间的依赖
实现
注意事项:分模块开发需要先针对模块功能进行设计,再进行编码.不会先将工程开发完毕,然后进行拆分
父工程的打包方式是什么
pom
父工程打包方式,该模块不写代码,仅进行项目管理
jar
普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war
普通web程序打包,需要部署在外部的tomcat服务器中运行
聚合与继承
聚合
在父模块pom.xml中使用module标签统一管理子模块叫做聚合
好处是通过父模块能够快速构建(清理,编译,打包)多个子模块
注意
聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关
继承
概念
继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用
简化依赖配置,统一管理依赖
实现
在子模块pom.xml中使用
不同点
- 聚合是在父模块中配置关系,父模块可以感知到参与聚合的子模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
版本锁定
在maven中,可以在父工程的pom文件中通过<dependencyManagement>
来统一管理依赖版本
注意事项
子工程引入依赖时,无需指定<version>
版本号,父工程统一管理.变更依赖版本,秩序在父工程中统一变更
使用<dependencyManagement>
定义的依赖是把这个依赖导进来了吗
- 不是,仅仅只是声明/锁定了依赖的版本
- 好处:子模块在使用这个依赖的时候不需要再定义版本号,由父模块统一管理依赖的版本
<dependencyManagement>
与<dependencies>
的区别是什么
是导入依赖,在父工程配置了依赖,子工程会直接继承下来 是统一管理依赖版本,不会导入依赖,还需要在子工程中引入所需依赖(无需指定版本)
属性与版本号
版本号
我们开发的每一个项目都会有一个版本号,后期随着项目的升级,版本号都会随之变化
SNAPSHOT(快照版本)
项目开发过程中的临时性版本叫快照版本也叫开发版本,快照版本会随着开发的进展不断更新
RELEASE(发布版本)
也叫稳定版本,这种版本所对应的代码是稳定的,即便进行功能的后续开发,也不会改变当前发布版本的内容,这种版本称为发布版本,将来用于上面上线
预定规范
规范
<主版本>.<次版本>.<增量版本>-<里程碑版本>
主版本
表示项目重大架构的变更,如spring5相较于spring4的迭代
次版本
表示有较大的功能增加和变化,或者全面系统的修复漏洞
增量版本
表示有个别漏洞的修复
里程碑版本
表明一个版本的里程碑,例如RELEASE,SNAPSHOT,beta
拆分项目,实现分模块开发
步骤
- 让tlias-parent父模块继承spring-boot-starter-parent,配置要继承的依赖,版本锁定,属性
- 将原项目中相关代码和依赖拷贝到tlias-pojo和tlias-utils子模块中,使其编译不报错
- 将原项目中相关代码,依赖,插件拷贝到tlias-web-management子模块中,使其编译不报错
- 运行tlias-web-management中的启动类,运行nginx,访问项目
私服
介绍和搭建
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题
依赖查找顺序
本地仓库->私服->中央仓库
注意事项
私服在企业项目开发中,一个项目/公司,只需要一台即可(无需我们自己搭建,会使用即可)
内部仓库分类
宿主仓库hosted
保存无法从中央仓库获取的资源
公司自主研发项目,第三方非开源项目
代理仓库proxy
和中央仓库打交道的仓库,代理远程仓库,通过nexus访问其他公共仓库
仓库组group
将若干个仓库组成一个群组,仓库组不能保存资源,属于设计型仓库
从私服下载jar
在项目的pom.xml文件中配置私服仓库组的地址即可
上传jar至私服
- 设置私服的访问用户名/密码(settings.xml中的servers中配置)
- maven工程的pom文件中配置上传(发布)的私服地址
- 在idea中双击deploy发布项目