之所以将这两个标签放在一起讲,是因为最近在做项目时对于多个模块的继承和管理遇到一些问题
parent
在maven中也有继承的概念,那我们熟悉的springboot来举例,因为它大量使用了继承
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
而他的父项目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
而dependencies才是我们真正管理依赖的项目,包括各种的版本控制,以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
发现问题
我们都知道,springboot自带许多的jar也就是依赖,我们不可能全部需要这些依赖,如果不采取措施,那我一个简单的项目也会非常庞大,springboot以及想好了办法解决
<dependencyManagement>
springboot将他管理的所有依赖用<dependencyManagement>包起来,不信的小伙伴我给你们看一下截图

看到了没,只要被这个标签包起来的依赖,在继承关系下子项目想要使用父项目的依赖,必须写
<dependency>
<groupId></groupId>
<artifactId></artifactId>
</dependency>
这段代码来引用所需的依赖!,举个例子,A是B,C的父项目,B需要使用A中的web功能,不需要jdbc功能,C需要使用A的jdbc功能,不需要web功能,那么只需要B和C分别引入各自的依赖即可,也不必担心多余的依赖
Module
这里举个简单的例子,有三个项目A,B,C,其中A含有B,C两个模块,在引入<module>之前,我在们进行清理,刷新或者打包时会一个一个的进行操作,很麻烦,这时候需要对其中一个进行操作,其他的也能进行相同的操作,<module>就是完成这种功能
<modelVersion>4.0.0</modelVersion>
<groupId>com.rwh.gulimall</groupId>
<artifactId>Demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Demo</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>Demo-coupon</module>
<module>Demo-member</module>
<module>Demo-order</module>
<module>Demo-product</module>
<module>Demo-ware</module>
<module>Demo-fast</module>
<module>Demo-generator</module>
</modules>
就拿这段代码来说,对Demo的操作的同时,也对他里面的modules进行了相同操作
文章最后提一下<packaging>pom</packaging>的作用:
在聚合多模块的时候,这时候都会有一个父级项目,pom文件一个重要的属性就是packaging(打包类型),一般来说所有的父级项目的packaging都为pom,packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包
本文深入探讨Maven中parent与dependencyManagement的概念,解析如何通过<parent>标签实现项目间的继承,以及如何利用<dependencyManagement>管理依赖,避免冗余,提升模块化项目的效率。
1万+

被折叠的 条评论
为什么被折叠?



