Day15-02.maven高级-继承与聚合-继承关系实现
(1)继承
刚才在做案例项目的多模块拆分的时候,可以看到我们所拆分的三个模块无论是poji还是urils或者web-management,都引入了lombok的依赖,重复配置了多次。如果是在一个大型的项目中,三个模块重复的依赖可能非常非常多,如果每一个maven模块里面我们都单独配置一次,功能虽然能实现,但是配置比较繁琐,maven的继承就是用来解决这个问题的。
使用maven的继承怎么解决这个问题呢?
创建一个父工程tlias-parent,然后让那三个模块都来继承这个parent父工程,这三个就成为子工程。此时各个子工程中共有的依赖就可以定义在父工程中,只要子工程继承了父工程,这个依赖也会继承下来,就不用我们在子工程中一个一个配置了。所以maven当中的继承是用来描述两个工程之间的关系的,与Java当中的继承类似,子工程可以直接父工程的配置信息,这里说的配置信息,经常值的就是依赖的配置信息。
(2)常见的打包方式
1、jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
解释:像我们创建的普通的模块,比如pojo,utils,这类模块的打包方式都是jar包。其他项目要想使用我们当前模块,直接引入对应的坐标就可以了。除了这些普通的模块以外,在现在的springboot项目开发中,基本上打包方式也都是jar包,因为在springboot中内嵌了tomcat这样的web服务器,将项目达成一个jar包后,我们通过java -jar这条指令就可以直接启动springboot项目。springboot 项目是运行在内嵌的tomcat服务器当中的。
2、war:普通web程序打包,需要部署在外部的tomcat服务器中运行
解释:像我们早起基于servlet技术开发的web程序,以及基于原始的springMvc所开发的web应用程序,打包方式都是war包。打成一个war包之后,没法通过java指令直接执行,它必须要部署在外部的tomcat服务器中才可以运行。现在的web程序开发我们基本都是基于springboot进行开发的,所以war包比较少见了。
3、pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
解释:这种打包方式常见于我们继承关系中的父工程,或者是后面马上讲到的聚合工程。一旦将打包方式设置为pom,就代表当前模块不会写任何的Java代码,只进行依赖管理。
(3)继承关系实现
1、创建爱你maven模块tlias-parent,该工程为负公差,设置打包方式为pom(默认jar)
2、在子工程的pom.xml文件中,配置继承关系
3、在父工程配置各个工程共有的依赖(子工程会自动继承父工程的依赖)
(4)总结