聚合工程

简介: 聚合工程

聚合工程

所谓的聚合工程,实际上也就是多模块项目。在一个比较大的互联网项目中,项目需要拆分成多个模块进行开发,比如订单模块、VIP 模块、支付模块、内容管理模块、CMS、CRM 等等。这种拆分方式,实际上更接近于微服务的思想。在一个模块中,还可以继续进行拆分,例如分成 dao、service、controller 等

有人可能会说,这个分包不就行了吗

小项目当然可以分包,大项目就没法分包了。比如,在一个大的电商系统中,有一个子模块叫做用户管理、还有一个子模块叫做订单管理,这两个子模块都涉及到用户,像这种情况,我们就需要将用户类单独提取出来,做成单独的模块,供其他模块调用

多模块项目展示

|--javaboy-parent
      |-- javaboy-cms
      |-- javaboy-crm
      |-- javaboy-manger
           |-- javaboy-manager-model
           |-- javaboy-manager-dao
           |-- javaboy-manager-service
           |-- javaboy-manager-web

以 javaboy-manger 为例,javaboy-manager 本身并不提供功能,它只负责管理他自己的子模块,而他的子模块每一个都无法独立运行,需要四个结合在一起,才可以运行。项目打包时,model、dao、service 都将打包成 jar,然后会自动将打包好的 jar 复制到 web 中,再自动将 web 打包成 war 包

IDEA中创建聚合工程

1.创建一个空的 Maven 项目

项目创建完成后,由于 parent 并不参与业务的实现,只是用来管理它的子模块,因此,src 目录可以将其删除

2.选中当前工程,右键单击,New -> Module

然后继续选择创建一个 Maven 项目

在 IDEA 中,已经默认指明了当前 Module 的 parent,开发者只需要填入当前 Module 的 artifactId 即可

javaboy-manager 创建完成后,此时,观察 javaboy-parent 的 pom.xml 文件,发现它自动加上了 packaging 属性 modules 属性

其中,它的 packaging 属性值为 pom,这表示它是一个聚合工程,同时,他还多了 modules 节点,指明了它自己的子模块。同时,注意 javaboy-manager,它自身多了一个 parent 节点,这个 parent 节点描述了它的父模块的属性值

<parent>
    <artifactId>javaboy-parent</artifactId>
    <groupId>com.javaboy</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

这个 parent 不仅仅是一个简单的父子关系描述,它存在继承关系,一般我们可以在 parent 中统一定义依赖或者插件的版本号

3.由于 javaboy-manager 本身也是一个聚合工程,因此,javaboy-manager 的 src 目录也可以删除

4.选中 javaboy-manager,右键单击,New -> Module 创建一个新的 Maven 模块出来。这个步骤类似于第二步,不在赘述。这里,新的 javaboy-manager-model 创建成功后,我们手动配置它的 packaging 属性值为 jar

5.依照第 4 步,再分别创建 javaboy-manager-service 以及 javaboy-manager-dao

6.继续创建 javaboy-manager-web 模块,不同于其他模块,web 模块需要打包成 war。web 模块创建可以参考【IDEA中使用Maven

7.web 工程创建完成后,完善模块之间的继承关系

javaboy-manager-web 依赖 javaboy-manager-service javaboy-manager-service 依赖 javaboy-manager-dao javaboy-manager-dao 依赖 javaboy-manager-model

注意,依赖默认是有传递性的,即在 javaboy-manager-dao 中依赖了 javaboy-manager-model,在 javaboy-manager-service 也能访问到

配置后的依赖关系如下图

接下来就可以在不同的模块中写代码,然后进行项目部署了。部署方式参考【IDEA中使用Maven

有一个需要注意的地方,在多模块项目中,web 项目打包需要注意以下问题

  • 不可以直接单独打包
  • 如果要打包,有两种方式

第一种就是先手动挨个将 model、dao、service 安装到本地仓库

从聚合工程处打包,即从 web 的 parent 处打包

相关文章
|
4月前
|
前端开发
领域驱动使用问题之领域驱动设计中聚合之间的依赖如何管理
领域驱动使用问题之领域驱动设计中聚合之间的依赖如何管理
|
4月前
|
存储 搜索推荐 数据库
项目管理问题之领域与聚合的关系是什么
项目管理问题之领域与聚合的关系是什么
|
5月前
|
Java 数据库 Maven
SpringBootWebProject学习3、各类包层级说明
SpringBootWebProject学习3、各类包层级说明
29 1
|
6月前
|
Java Maven
解决多模块开发中的问题(聚合&继承)
解决多模块开发中的问题(聚合&继承)
86 3
|
11月前
|
Java Maven Spring
Maven - 父工程的使用与聚合
Maven - 父工程的使用与聚合
169 2
|
6月前
|
Java Maven
Maven高级-聚合及实施步骤
Maven高级-聚合及实施步骤
68 0
|
6月前
|
前端开发 Java Maven
Maven 插件统一修改聚合工程项目版本号
Maven 插件统一修改聚合工程项目版本号
|
算法 Java Maven
创建springcloud聚合工程项目
创建springcloud聚合工程项目
|
JSON 安全 Java
Maven的聚合工程搭建示意
聚合工程:指的是基于Maven工程的模块化开发。它的优势是: 目录清晰,方便管理 支持分开开发(团队) 便捷且统一的依赖版本管理。
160 0
|
大数据 开发者
聚合操作_多维聚合_编写代码 | 学习笔记
快速学习聚合操作_多维聚合_编写代码
115 0
聚合操作_多维聚合_编写代码 | 学习笔记