持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
单模块
maven 是开发中很常用的工具,可以帮助我们管理项目的依赖,还可以帮助我们打包项目。除此之外,maven的模块化可以帮助我们管理模块之间的父子关系。当项目不大的时候,我们单模块就可以搞定,不需要用到maven的模块化管理。当项目的业务量比较大时,推荐使用maven模块化,降低代码之间的耦合度。
多模块
功能解耦,项目工程职能清晰
一个大项目要进行拆分,可以根据职责或业务拆分。
根据职责拆分,比如拆分成api和srv两部分。将接口的定义以及请求响应的dto类放到api模块,将业务逻辑的具体实现放到srv模块,使代码职责清晰。
根据业务拆分,比如拆分成以下模块:
auth-srv:鉴权模块
order-srv:订单模块
bill-srv:账单模块
项目结构清晰,也可以帮助新接触项目的人快速理解整个项目。
代码复用,可独立维护某个核心模块
对项目拆分成多个模块后,可依据不同模块由多个开发人员独立维护并行开发,开发人员职责清晰,也可以提高开发效率。
还可以将一些多个业务模块中都需要的代码放到一个公共的模块中,比如新建common模块作为公共服务模块,在需要common模块的业务模块中去引入common依赖。
例如,主pom.xml如下所示,
<packaging>pom</packaging>
<modules>
<module>auth-srv</module>
<module>order-srv</module>
<module>bill-srv</module>
<module>common</module>
</modules>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
auth-srv模块用到common模块,它的pom.xml如下所示,
<parent>
<artifactId>demo</artifactId>
<groupId>com.example</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>auth-srv</artifactId>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
便于编译、部署,可单独打包和部署
如果项目只有一个模块,我们改动其中一小个地方,也需要对整个项目进行重新编译、部署。使用多模块后,每个模块可以单独打包部署,maven指令可以通过参数指定你要构建的模块以及其依赖项。-pl指令可以指定要打包的模块,-am指令表示同时处理依赖项。
例如,如下指令用于打包auth-srv模块及其依赖项:
mvn package -pl auth-srv -am