1.分模块设计与开发
如果项目不分模块,意味着所有的业务代码都写在这一个 Java 项目当中,随着这个项目的业务扩张,项目当中的业务功能可能会越来越多,项目管理和维护就非常困难,项目中的通用组件难以复用
分模块设计我们在进行项目设计阶段,就可以将一个大的项目拆分成若干个模块,每一个模块都是独立的

比如将商品的相关功能放在商品模块当中,搜索的相关业务封装在搜索模块当中等。为了组件的复用,可以将项目当中的实体类、工具类以及我们定义的通用组件都单独的抽取到一个模块当中
策略:
策略一:按照功能模块拆分,比如:公共组件、商品模块、搜索模块、购物车模块、订单模块等

策略二:按层拆分,比如:公共组件、实体类、控制层、业务层、数据访问层

策略三:按照功能模块 + 层拆分

2.分模块设计实践(以tlias为例子)
将pojo包下的实体类,抽取到一个maven模块中 tlias-pojo
将utils包下的工具类,抽取到一个maven模块中 tlias-utils
其他的业务代码,放在tlias-web-management这个模块中,在该模块中需要用到实体类pojo、工具类utils,直接引入对应的依赖即可

注:分模块开发需要先针对模块功能进行设计,再进行编码
实现:
步骤一:
-
创建maven模块
tlias-pojo,存放实体类 -
然后在tlias-pojo中创建一个包
com.itheima.pojo -
将原来案例项目
tlias-web-management中的pojo包下的实体类,复制到tlias-pojo模块中 -
在
tlias-pojo模块的pom.xml文件中引入依赖

- 删除原有案例项目
tlias-web-management的pojo包,然后在pom.xml中引入tlias-pojo的依赖

步骤二:
-
创建Maven模块 tlias-utils,存放相关工具类
-
然后在
tlias-utils中创建一个包com.itheima.utils -
将原来案例项目
tlias-web-management中的util包下的实体类,复制到tlias-utils模块中 -
在
tlias-utils模块的pom.xml文件中引入依赖


- 删除原有案例项目
tlias-web-management的util包,然后在pom.xml中引入tlias-utils的依赖

完成模块的拆分
3.继承与聚合
模块当中重复的依赖可能会很多很多,配置是比较繁琐的
继承:
可以再创建一个父工程 tlias-parent ,然后让上述的三个模块都来继承这个父工程,再将各个模块中共有的依赖提取到父工程 tlias-parent中进行配置,只要子工程继承了父工程,依赖它也会继承下来,无需在各个子工程中进行配置了

语法格式:

Maven不支持多继承,一个maven项目只能继承一个父工程
可以让创建的三个模块,都继承 tlias-parent,而 tlias-parent 再继承 spring-boot-starter-parent

实现:
步骤一:
-
创建maven模块
tlias-parent,该工程为父工程,设置打包方式pom(默认jar) -
工程结构如下(src目录不需要,直接删除)

父工程tlias-parent的 pom.xml 文件配置:

步骤二:
- 在子工程(
tlias-pojo、tlias-utils、tlias-web-management)的pom.xml文件中,配置继承关系

步骤三:
- 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)

子工程中的这一项依赖,就可以直接删除了
Maven打包方式:
jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war:普通web程序打包,需要部署在外部的tomcat服务器中运行
pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
4.版本锁定
在maven中,可以在父工程的pom文件中通过 <dependencyManagement> 来统一管理依赖版本
父工程:

子工程:

注:
在父工程中所配置的 <dependencyManagement> 只能统一管理依赖版本,并不会将这个依赖直接引入进来
子工程要使用这个依赖,还是需要引入的,只是此时就无需指定 <version> 版本号,变更依赖版本,只需在父工程中统一变更
实现:(以tlias-utils为例)
步骤一:
tlias-parent中的配置

步骤二:
tlias-utils中的pom.xml配置,如果依赖的版本已经在父工程进行了统一管理,所以在子工程中就无需再配置依赖的版本

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

自定义属性语法:
<properties>
<lombok.version>1.18.34</lombok.version>
</properties>
引用属性:

可以在父工程中,将所有的版本号,都集中管理维护起来

5.聚合
将多个模块组织成一个整体,同时快速进行项目的构建
实现:
在聚合工程中通过 <moudules> 设置当前聚合工程所包含的子模块的名称
可以在 tlias-parent中,添加配置来指定当前聚合工程,需要聚合的模块

此时要进行编译、打包、安装操作,就无需在每一个模块上操作,只需要在聚合工程上,统一进行操作就可以
6.继承与聚合的对比
作用:
聚合用于快速构建项目
继承用于简化依赖配置、统一管理依赖
相同点:
聚合与继承的pom.xml文件打包方式均为pom,通常将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
7.私服
我们在项目中需要使用其他第三方提供的依赖,如果本地仓库没有,会自动连接私服下载,如果私服没有,私服此时会自动连接中央仓库,去中央仓库中下载依赖,然后将下载的依赖存储在私服仓库及本地仓库中
私服就是特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题
依赖查找顺序:
本地仓库-》私服仓库-》中央仓库
注:私服在企业项目开发中,一个项目/公司,只需要一台即可
8.资源上传与下载
步骤:三步配置+一条指令
- 在maven的配置文件中配置访问私服的用户名、密码(在自己maven安装目录下的
conf/settings.xml中的servers中配置)

- 在maven的配置文件中配置连接私服的地址(url地址)(在自己maven安装目录下的
conf/settings.xml中的mirrors中配置)

- 在项目的pom.xml文件中配置上传资源的位置(url地址)(在自己maven安装目录下的
conf/settings.xml中的profiles中配置)

- IDEA的maven工程的pom文件中配置上传地址(直接在
tlias-parent中配置发布地址)

- 执行maven生命周期:
deploy
私服仓库说明;
RELEASE:存储自己开发的RELEASE发布版本的资源
SNAPSHOT:存储自己开发的SNAPSHOT发布版本的资源
Central:存储的是从中央仓库下载下来的依赖
项目版本说明:
RELEASE(发布版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。