多模块拆分的必要性
使用java技术开发的工程项目,无论是数据处理系统还是web网站,随着项目的不断发展,需求的不断细化与添加,工程项目中的代码越来越多,包结构也越来越复杂这时候工程的进展就会遇到各种问题:
(1)不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题。
(2)多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个项目的结构(通常在项目较大且开发时间较长时这是很难做到的)。
(3)开发者对自己或者他人负责的代码边界很模糊,这是复杂项目中最容易遇到的,导致的结果就是开发者很容易修改了他人负责的代码且代码负责人还不知道,责任追踪很麻烦。
将一个复杂项目拆分成多个模块是解决上述问题的一个重要方法,多模块的划分可以降低代码之间的耦合性(从类级别的耦合提升到jar包级别的耦合),每个模块都可以是自解释的(通过模块名或者模块文档),模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内容。
将原来product项目拆分为如下3个模块
- product-server //所有的业务逻辑
- product-client //对外暴露的接口
- product-common //公用的对象
1、在原有的项目上右击,new->module
2、选择maven选项,archetype可以不选择,直接next
3、填写对应的groupid和artifactid即可,一直next,一直到finish
如果发现创建好的maven项目不能新增class文件,可以在对应的文件夹上右键,将其添加为sources root即可;
4、查看外层pom文件
新增完所有的模块之后,在最外层的pom文件会自动将其引入进来
5、版本管理
可以在properties中设置版本管理,方便以后升级之后的改动
6、项目依赖
在微服务中,当前项目很有可能依赖于其他服务的公用项目,这就需要我们先将其他其他服务的公用项目进行打包,并且先放在我们的maven的本地仓库,这样当前项目才可以进行依赖,打包前,需要在公用的项目中输入如下命令:mvn -dmaven.test.skip=true -u clean install
(①-dmaven.test.skip=true跳过测试用例;②-u为强制刷新;③clean清除原有target产生的jar包;④install将其打包放到本地的maven仓库)
打包完成之后idea控制台显示如下:
在本地仓库显示如下:
7、修改完项目结构图
8、理解maven命令package、install、deploy的联系与区别
mvn clean package依次执行了clean、resources、compile、testresources、testcompile、test、jar(打包)等7个阶段。
mvn clean install依次执行了clean、resources、compile、testresources、testcompile、test、jar(打包)、install等8个阶段。
mvn clean deploy依次执行了clean、resources、compile、testresources、testcompile、test、jar(打包)、install、deploy等9个阶段。
由上面的分析可知主要区别如下,
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000016306658