一、搭建背景

Maven多模块架构方式适用于大中型及以上的项目,为什么这么说呢,因为就一般而言小型项目和中型项目涉及到的功能点不会很多,其中涉及到的业务逻辑不会很复杂,往往很容易实现;二大中型项目以及大型项目,尤其是需要使用微服务架构的项目往往涉及到的功能点非常多,涉及到的数据量也不会很小,其中的业务逻辑也会非常复杂,如果还用传统的MVC架构方式来开发项目往往在后期会显得很臃肿,整个项目的架构不会很明显,各模块间也会高度耦合,如果需要将项目迭代升级则需要变动项目很多地方,甚至将整个项目模块进行重构,这一问题在如今互联网+时代以及信息技术高速发展的时代是致命的,这一问题会直接导致企业跟不上信息化发展的潮流,同时还会降低企业发展的效率,增加企业维护的成本。

二、搭建步骤

项目IDE呢,这个我推荐使用IDEA来开发,在开发效率和敏捷性上都有不错的表现。

首先,我们打开IDEA,选择左侧的Maven,如图1所示:

java 项目引入maven maven项目引入springboot_idea集成maven

图1 选择Maven创建项目

这里根据业务场景来选择是否勾选Create from archetype来进行项目的开发,一般来说不需要选择,直接Next,填写完GroupId ArtificatId之后再次Next,如下图2所示:

java 项目引入maven maven项目引入springboot_java 项目引入maven_02

java 项目引入maven maven项目引入springboot_java 项目引入maven_03

图2 填写项目基本信息

可以根据项目名称来进行改动,如果不需要任何改动,则点击Finish完成项目的创建,我们来看一下创建完成的项目架构,如图3所示:

java 项目引入maven maven项目引入springboot_java 项目引入maven_04

图3 原始项目架构

接下来,我们需要对这个架构进行调整:首先删除掉src文件夹,因为本层是来充当整体项目的根目录,不做任何业务的开发和数据的处理,所以在这里不需要src文件夹,只需要来管理项目的根目录即可,剩余的pom文件不需要删除,留着来为项目添加统一的依赖,如下图4所示:

java 项目引入maven maven项目引入springboot_java 项目引入maven_05

图4 整体项目根目录结构

直到这里,项目根路径就做完了,接下来就是根据项目业务实际需要来新建不同的Modules来完成项目整体的架构,这里我新建两个Module来演示一下具体的效果。选中项目根路径,右键选择NewModule,然后就是重入上述流程即可完成Module的创建,如下图5所示:

java 项目引入maven maven项目引入springboot_java 项目引入maven_06

图5 项目新Module的创建

在创建完新Module之后,我们可以在新Module的pom文件中看到一个parent标签,这个标签是Maven为我们自动生成的依赖关系标签,表示此Module依赖于名为demo.studying的模块,也就是我们创建的项目根路径,如果我们在项目根路径中声明了节点,则此Module会直接集成该节点下的所有依赖,而不需要再在此Module中重复引入依赖。由于本博文中使用的是SpringBoot框架,所以我们需要在新Module中的pom文件中引入SpringBoot的插件来支持项目使用SpringBoot框架来进行具体业务的开发和数据处理工作,如图6所示:

java 项目引入maven maven项目引入springboot_java 项目引入maven_07

 图6 在新Module中引入SpringBoot-Maven支持插件

因为我们是使用的Maven的方式来构建的项目,没有选择Spring Intializer的方式来构建项目,所以在我们的项目中或者Module中看不到SpringBoot的启动类,所以需要我们来手动创建,选中新Module的java文件夹,右键New->Java Class,并为其命名,完善SpringBoot启动类,如图7所示:

java 项目引入maven maven项目引入springboot_idea集成maven_08

图7 在新Module中创建SpringBoot启动类

java 项目引入maven maven项目引入springboot_idea集成maven_09

至此,创建多Moudle的Maven项目的所有步骤已经完成,接下来就可以愉快的进行大中型项目的开发了。

三、如何运行Maven多Moudle项目

我们都知道,Maven项目是可以通过手动指定的方式指定项目的打包方式,在pom文件中也就是标签,而Maven默认的打包方式是将项目打成jar包,一般来讲,我们需要将项目的根路径指名为war的方式,将其他子Moudle指名为jar的方式来构建项目;如果在子Moudle中扔然存在充当父路径的Moudle,则应该将此Moudle的导报方式也指名为war包。

在启动项目时候,我们需要按照项目的业务顺序来启动项目,例如Service->Mapper->Controller架构方式,那么在启动项目的时候我们需要新启动Service层的启动类,再启动Mapper层的启动类,最后启动Controller的启动类,这样一来IDEA会默认为我们创建一个Spring DashBoard来监控我们所启动的都有哪些项目,这也是微服务底层的结构方式,Maven多模块项目的实现思路正是借鉴了这一点。至此,我们的Maven多模块项目就运行起来了。

到这里,如何基于Maven使用SpringBoot搭建多模块项目就介绍完毕。