目录
目录
前言:
实现一个聚合项目:
1、创建p项目
2、修改packaging类型为pom
3、添加业务核心a项目(作为后端)
4、添加web项目。作为前端的开发。
5、整体项目大纲
6、b项目引入a依赖。
7、a项目的开发与单元测试
8、拓展
源码:
前言:
当一个独立的maven项目不断扩大,我们会增加人手,并将项目按模块或者按层次进行划分,由不同的人进行负责相应的模块或者层次。这里就需要对项目进行拆分,拆分之后又需要一个可以一次构建所有拆分项目的“总项目”。 那么,总项目就是聚合了所有子项目的家伙,这就是聚合的概念。
当一个公司从原先的一个项目,扩展到了多个项目,开始有了多个团队,A团队负责A项目,B团队负责B项目。每个项目技术负责人虽然使用相同的Java技术与框架,但可能各自使用了不同的版本。甚至说使用了Java技术的不同框架。那么对于公司方面来说,整体的维护和管理是很不方便的。 如果有那么一个标准,类似于Java中的超类概念,每个项目团队的项目就是这个超类的子类实现,子类使用超类规定的方法并可以有自己的拓展。 那么从整体来讲,这样就不会那么混乱。 这就是继承的概念。(当然继承的好处不止这么一点。)
maven作为依赖管理的工具,同样提供了这样的功能,就是pom的继承。公司提供标准的pom,规定了Spring使用的版本,以及相关的依赖版本,并且有公司的技术大牛负责处理各个依赖的版本冲突问题。每个项目组的项目只要继承这个大牛pom,不需要关系依赖版本,冲突等问题,从而专注以业务开发。(其实SpringBoot就是免费的大牛pom,而且还不仅仅提供了pom)
实现一个聚合项目:
聚合其实是可以和继承分开使用的, 但如果说,他们聚合在一起,a模块使用4.0.0版本的Spring,b模块使用5.0.0版本的Spring,那么这就会产生很多意想不到的冲突和事件。
所以,常常来说,聚合会与继承一起使用。 那么接下来,我简单演示一下使用Eclipse快速搭建一个聚合项目
- p 父项目 (聚合)
- a 业务核心
- b 系统web
1、创建p项目
2、修改packaging类型为pom
(这个项目作为被集成和聚合任务,不需要有自己的业务代码。)
3、添加业务核心a项目(作为后端)
选中p项目,点击new,添加一个Maven Module
4、添加web项目。作为前端的开发。
其他的操作一样,maven骨架选择webapp。
5、整体项目大纲
这样我们就可以单独的构建a b 以及 整体的构建p。
6、b项目引入a依赖。
b作为前端,需要与后端核心代码进行交互,即需要引入a依赖
对于前端开发来说, 他只需要下载b,进行开发,如果后端提供了新版本,前端只需要修改version即可捕获,又或者使用SNAPSHOT,每次更新最新的a项目代码。
7、a项目的开发与单元测试
对于普通的小公司来说,他们的后端开发都是通过web页面进行测试代码的正确性的,其实这样并不高效。应该使用单元测试。
若引入了单元测试,作为后端开发,a项目无需引入b,只要完成业务逻辑,实现单元测试,完成代码覆盖。那么后端就与前端分离了。
8、拓展
a的后端还可以进行拆分,具体的可以根据业务的需求,项目的分工进行,此处不再赘述。
源码:
https://github.com/bof-jangle/p
ssm项目结构+前端交互 的webapp 源码:
https://github.com/bof-jangle/p_webapp