[Maven 进阶] 分模块开发与设计
分模块开发设计
(1)按照功能拆分
我们现在的项目都是在一个模块中,比如前面的 SSM 整合开发。虽然这样做功能也都实现了,但是也存在了一些问题,我们拿银行的项目为例来聊聊这个事。
网络没有那么发达的时候,我们需要到银行柜台或者取款机进行业务操作
随着互联网的发展,我们有了电脑以后,就可以在网页上登录银行网站使用 U 盾进行业务操作
再来就是随着智能手机的普及,我们只需要用手机登录 APP 就可以进行业务操作
上面三个场景出现的时间是不相同的,如果非要把三个场景的模块代码放入到一个项目,那么当其中某一个模块代码出现问题,就会导致整个项目无法正常启动,从而导致银行的多个业务都无法正常班理。所以我们会==按照功能==将项目进行拆分。
(2)按照模块拆分
比如电商的项目中,有订单和商品两个模块,订单中需要包含商品的详细信息,所以需要商品的模型类,商品模块也会用到商品的模型类,这个时候如果两个模块中都写模型类,就会出现重复代码,后期的维护成本就比较高。我们就想能不能将它们公共的部分抽取成一个独立的模块,其他模块要想使用可以像添加第三方 jar 包依赖一样来使用我们自己抽取的模块,这样就解决了代码重复的问题,这种拆分方式就说我们所说的==按照模块==拆分。
经过两个案例的分析,我们就知道:
==将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。==
刚刚我们说了可以将 domain 层进行拆分,除了 domain 层,我们也可以将其他的层也拆成一个个对立的模块,如:
这样的话,项目中的每一层都可以单独维护,也可以很方便的被别人使用。关于分模块开发的意义,我们就说完了,说了这么多好处,那么该如何实现呢?
分模块开发实现
前面我们已经完成了 SSM 整合,接下来,咱们就基于 SSM 整合的项目来实现对项目的拆分。
环境准备
还是沿用前文的项目背景:
抽取 domain 层
步骤 1:创建新模块
创建一个名称为maven_03_pojo
的 jar 项目,为什么项目名是从 02 到 03 这样创建,原因后面我们会提到,这块的名称可以任意。
步骤 2:项目中创建 domain 包
在maven_03_pojo
项目中创建com.itheima.domain
包,并将maven_02_ssm
中 Book 类拷贝到该包中
步骤 3:删除原项目中的 domain 包
删除后,maven_02_ssm
项目中用到Book
的类中都会有红色提示,如下:
说明:出错的原因是maven_02_ssm
中已经将 Book 类删除,所以该项目找不到 Book 类,所以报错
要想解决上述问题,我们需要在maven_02_ssm
中添加maven_03_pojo
的依赖。
步骤 4:建立依赖关系
在maven_02_ssm
项目的 pom.xml 添加maven_03_pojo
的依赖
因为添加了依赖,所以在maven_02_ssm
中就已经能找到 Book 类,所以刚才的报红提示就会消失。
步骤 5:编译maven_02_ssm
项目
编译maven_02_ssm
你会在控制台看到如下错误
错误信息为:不能解决maven_02_ssm
项目的依赖问题,找不到maven_03_pojo
这个 jar 包。
为什么找不到呢?
原因是 Maven 会从本地仓库找对应的 jar 包,但是本地仓库又不存在该 jar 包所以会报错。
在 IDEA 中是有maven_03_pojo
这个项目,所以我们只需要将maven_03_pojo
项目安装到本地仓库即可。
步骤 6:将项目安装本地仓库
将需要被依赖的项目maven_03_pojo
,使用 maven 的 install 命令,把其安装到 Maven 的本地仓库中。
安装成功后,在对应的路径下就看到安装好的 jar 包
**说明:**具体安装在哪里,和你们自己电脑上 Maven 的本地仓库配置的位置有关。
当再次执行maven_02_ssm
的 compile 的命令后,就已经能够成功编译。
抽取 Dao 层
步骤 1:创建新模块
创建一个名称为maven_04_dao
的 jar 项目
步骤 2:项目中创建 dao 包
在maven_04_dao
项目中创建com.itheima.dao
包,并将maven_02_ssm
中 BookDao 类拷贝到该包中
在maven_04_dao
中会有如下几个问题需要解决下:
项目
maven_04_dao
的 BookDao 接口中 Book 类找不到报错解决方案在
maven_04_dao
项目的 pom.xml 中添加maven_03_pojo
项目
项目
maven_04_dao
的 BookDao 接口中,Mybatis 的增删改查注解报错解决方案在
maven_04_dao
项目的 pom.xml 中添加mybatis
的相关依赖
步骤 3:删除原项目中的 dao 包
删除 Dao 包以后,因为maven_02_ssm
中的 BookServiceImpl 类中有使用到 Dao 的内容,所以需要在maven_02_ssm
的 pom.xml 添加maven_04_dao
的依赖
此时在maven_02_ssm
项目中就已经添加了maven_03_pojo
和maven_04_dao
包
再次对maven_02_ssm
项目进行编译,又会报错,如下:
和刚才的错误原因是一样的,maven 在仓库中没有找到maven_04_dao
,所以此时我们只需要将maven_04_dao
安装到 Maven 的本地仓库即可。
步骤 4:将项目安装到本地仓库
将需要被依赖的项目maven_04_dao
,使用 maven 的 install 命令,把其安装到 Maven 的本地仓库中。
安装成功后,在对应的路径下就看到了安装好对应的 jar 包
当再次执行maven_02_ssm
的 compile 的指令后,就已经能够成功编译。
运行测试并总结
将抽取后的项目进行运行,测试之前的增删改查功能依然能够使用。
所以对于项目的拆分,大致会有如下几个步骤:
(1) 创建 Maven 模块
(2) 书写模块代码
分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。拆分方式可以按照功能拆也可以按照模块拆。
(3)通过 maven 指令安装模块到本地仓库(install 指令)
团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服),私服我们后面会讲解。
版权声明: 本文为 InfoQ 作者【fake smile by】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce0af689e3f92f69c3cf20fed】。未经作者许可,禁止转载。
评论