Maven 工程拆分和聚合的思想
一、问题引入
通过前面 SSM案例的整合 可以看出普通的项目基本都是包括 service/controller/service,
但是现在存在一个问题,比如对于卖家和买家的订单操作任务:
买家:买家要看到订单,需要从数据库中查询数据,这属于 dao 层任务
卖家:卖家要看到订单,需要从数据库中查询数据,这也属于 dao 层任务
这就牵扯到代码的可重用,想要的效果是不同工程的相同任务或者模块,可以使用同一套jar包,
这里的 jar 包 指 dao 和 domain 封装起来看成订单读取任务的 jar 包。
这里的代码可重用和传统的复制粘贴不同:
代码可重用:如果修改维护,只用修改一份
代码复制粘贴:复制粘贴几个地方,那么代码维护就需要几个地方
二、maven 的聚合思想
maven 在解决代码可重用和便于维护问题上是这么解决的: .
- maven把一个完整的项目,分成不同的独立模块,这些模块都有各自独立的坐标,哪个地方需要其中某个模块,就直接引用该模块的坐标即可。
- 今后如果公司开发一个新项目,我们先考虑问题不是dao, service, utils, domain如何编写,我们要考虑的是,dao, service, utils, domain 这些模块是否已经存在,如果存在直接弓|用。
以上说的就是 maven 拆分的思想,我们可以把拆分零散的模块聚合到一起编写一个完整的项目 ,这就是maven聚合思想
三、示例理解继承和聚合
-
何为继承:
继承是为了消除重复,如果将 dao、 service、 web 分开创建独立的工程则每个工程的 pom.xml
文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的
配置提取出来在父工程的 pom.xml 中定义。 -
何为聚合:
项目开发通常是分组分模块开发, 每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如: dao、 service、 web 三个工程最终会打一个独立的 war 运行