目录
Maven的模块化开发
这里介绍Maven的模块化开发,在上一篇文章中,我们知道Maven可以改造成SprigBoot项目。基于上述模块结构,我们也可以直接应用在SpringBoot中。因为在公司新项目中介绍到这种架构,那么在这里详细介绍如何去搭建这样的架构。
-
一、案例分析:【Why+How】
以风控系统为例:这里有两个项目
在旧的系统,一般都不区分多个项目,直接写在一个项目里面,这样的话,项目就会显得很臃肿。但是呢!在比较大的项目中,最好是拆分开来,比较方便维护。这里暂时划分为两个项目:
Website:是公司外部人员使用App的项目
Mgrsite:是公司内部人员使用管理后台的项目
进一步分析,如果说两个项目有部分公用的部分,例如:用户的实体,website项目本身就需要对用户进行身份验证;后台管理系统也需要对用户进行管理,因此也是需要这个用户的实体,如果说:每个项目都维护一个用户实体的话,那么就很麻烦。每次更新需要更新两次代码,因此,将共同的部分抽取出来当做一个单独的项目。
因此,这里就有三个项目,变成下面的结构图:
在进一步思考一个问题,如果说Website项目和Mgrsite项目都有自己的版本控制,那么在修改版本信息的需要修改两次,能不能把这种版本控制呢,交由给一个工程来控制,这个工程叫父工程,子工程只需要去继承父工程即可。经由这步思想,改造成下面这种架构。
下面这张图就是解释为什么可以把版本控制交由给父工程来控制,这是因为有一个叫:
dependencyManagement的标签:这个标签呢,定义的依赖表示不是立即加载,而是当子模块在dependencies去定义依赖的时候,如果没有指定版本的话,那么它会直接使用dependencyManagement里面的依赖版本,这样的话就实现了子工程的依赖交由给父工程控制。
-
二、代码搭建~~ 【what】
- 创建一个父工程~~上一篇maven创建步骤已经详细截图了,这里不冗余了。
- 选择quickstart
- 将src文件删除,它只是一个管理依赖的父工程,不需要任何的代码编码
- 删除所有的pom依赖,跟插件,留下最简单的pom文件即可
- 增加一行配置,打包方式为pom方式,代码如下
<packaging>pom</packaging>
|
- 创建core工程 ~~ 这个是两个工程的共同部分
- 在父工程右边àNewàModule
- 接下来就跟maven工程是一样的,按照提示输入:项目名称,版本号即可
- 查看pom文件,你会发现parent就是parentDemo
- 在parent中,也会自动有一个module的属性配置
- 增加一行配置,打包方式为pom方式,代码如下
<packaging>jar</packaging>
|
3. Website项目和Mgrsite项目的创建方式上面core创建方式一样,但是有一点不一样的是,指定它的打包类型为war形式。
<packaging>war</packaging>
这里就不掩饰了,直接上最终项目的效果图。
这样子,项目的基本架构就搭建成功了。接下来,给大家分析一下pom文件中几个重要的标签。
-
三、Pom文件配置的分析~~~
- 全局配置依赖~~ 实现父工程控制所有子工程依赖的效果。
在parent父工程中的pom引入
|
打开右边的Maven Projects可以看到~~三个子工程都引入了该依赖。
- 全局控制版本~~ 实现父工程控制所有子工程版本的效果。
|
可以看,其他模块并没有立刻引入了该依赖,而是只有在子模块中,声明了要使用该依赖才会立刻使用该依赖。
在mgrsite和Website项目中:引入该依赖,但是没有声明版本号
以上呢,SpringBoot的模块化开发基本就搭建完成了。
- 其他工程依赖core工程
|