目录
一、引入
maven是一款构建和管理java项目的工具。
在实际的开发场景中,我们一般会将一个项目拆分为多个模块,让每个模块实现自己特定的功能。这样一来,极大方便了项目的管理、维护、拓展,也方便了模块之间的相互调用、共享资源。这种思想是高级maven的基础。
但是我们在分模块设计的时候还会遇到一些比较繁琐的操作:
- 有一些依赖在每一个项目内都被调用,使用起来非常繁琐(继承解决)
- 有些依赖并不一定被每个项目调用,但是也有多个项目调用的情况,那么这个时候依赖的版本如果要修改就会很麻烦,需要到每一个项目的pom文件中去注意修改,而且会有以来版本不一致的风险(继承解决)
- 在项目进行打包的时候,需要逐级根据依赖关系进行一一打包,也非常繁琐(聚合解决)
那么如果来解决这些问题呢?那就是项目的继承和聚合。
二、Maven的继承
1.1 依赖被重复调用的解决
1.1.1 存在问题:
打个比方,如果我们在三个模块中都引入了一个Lombok依赖,那么在以后的开发中,如果做一个大型的项目,这些重复被调用的依赖会非常多,而且项目的数量也会非常多,这种方法是不是非常的繁琐?
1.1.2 解决方法:
- 再创建一个父工程 tlias-parent
- 然后让上述的三个模块 tlias-pojo、tlias-utils、tlias-web-management 都来继承这个父工程
- 将各个模块中都共有的依赖,都提取到父工程 tlias-parent中进行配置,只要子工程继承了父工程,依赖它也会继承下来
这样就无需在各个子工程中进行配置了。
但是在对设想进行实践之前,还要插入一个小细节 --->>>
细节:在Maven的继承中,一个子项目,对应一个父工程。(一个儿子不能有多个父亲)
但是在项目当中,启动项目是一个springboot项目,而springboot项目都会有一个统一的父工程,就是spring-boot-starter-parent
假设tlias-web-management是一个启动项目:
- 它既要继承一个自定义的父工程,简化繁琐的依赖引入
- 又想不影响其继承springboot框架的父工程spring-boot-starter-parent
它既要又要该怎么办?
我们不妨联想一下Java中的继承,虽然不能多继承,但是不是可以进行多层继承呀?
-------解决: