Maven的拆分聚合思想
一、问题引入
- 在我们前面创建SSM整合案例里面,可以看出我们普通项目中的结构
- 但是存在一个问题! 例如!
卖家查看订单信息,需要查询数据库,这是DAO层的任务
卖家查看订单信息,需要查询数据库,这也是DAO层的任务
- 这就牵扯到代码的可重用,想要的效果是不同工程的相同任务或者模块,可以使用同一套jar包,
这里的 jar 包 指 dao 和 domain 封装起来看成订单读取任务的 jar 包。
如果只是简单的复制解决,那么复制多少代码需要维护多少
代码复用,就是将其拆分出来一个独立工程,只需要维护一份就够了
二、maven的聚合思想
- Maven解决代码的复用问题
- 将一个完整的项目拆分为不同的模块,每个模块都有独立的坐标,哪里需要这些模块,直接导入坐标即可。
- 今后如果公司开发一个新项目,我们先考虑问题不是dao, service, utils, domain如何编写,我们要考虑的是,dao, service, utils, domain 这些模块是否已经存在,如果存在直接弓|用。
我们可以把拆分零散的模块聚合到一起编写一个完整的项目 ,这就是maven聚合思想
2.1 工程与模块的概念
2.1.1 工程和模块的区别
- 工程不等于完整的项目,模块也不是完整的项目,一个完整的项目看的是代码完成。
一个完整的项目和此项目中的模块和工程没有关系
-
工程只能使用自己内部资源,工程先天具有独立性
-
模块不是独立的,模块属于父工程,先天就就可以使用父工程中的资源
-
平级直接引用是依赖,依赖是后天建立的
在实际开发中,如果传递依赖丢失,也就是jar包无法导入,那么直接再导入一次
三、具体示例
-
创建工程与模块
-
何为继承:
继承是为了消除重复,如果将 dao、 service、 web 分开创建独立的工程则每个工程的 pom.xml
文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的
配置提取出来在父工程的 pom.xml 中定义。 -
何为聚合:
项目开发通常是分组分模块开发, 每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如: dao、 service、 web 三个工程最终会打一个独立的 jar/war 运行