总结:Springboot的pom配置

一、dependencymanagement

1、在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
2、pom.xml文件中,jar的版本判断的两种途径:

  • 如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version。
  • 如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

3、dependencies和dependencyManagement的区别
      3.1 dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
      3.2 dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

二、parent标签

parent用于引用父工程
1、统一管理jar包的版本,其依赖需要在子工程中定义才有效(比如此例)
2、统一的依赖管理(父工程的,子工程不必重新引入,功能和dependencyManagement类似)
3、控制插件的版本

parent标签一般会和dependencyManagement结合使用,即:

  • 不是全部需要的依赖写在dependencyManagement中,让子项目免除写版本号
  • 共的依赖写在parent的<dependency>中,子项目就不用导入依赖了,因为parent的<dependency>是默认被子项目下载的

三、dependencyManagement与dependencies的区别

dependencyManagement:并不实际引入,要和dependencies结合使用

dependencies:可单独使用,也可结合dependencyManagement使用,当结合dependencyManagement使用的时候,可不写版本号,dependencies在子项目中会自动引入这些依赖

四、dependencyManagement与parent标签的区别

1、dependencyManagement标签

作用就是版本依赖的管理,免写版本号,如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明。

在子项目中不会自动引入这些依赖,子项目如果想使用,还是需要单独引入,但是可以不写版本号(这是dependencyManagement的主要作用),但是如果子项目定义一个新的版本,那么就会覆盖parent的版本。

总结:dependencyManagement作用只有一个,管理依赖的版本号,作用是可以统一依赖

2、parent标签

1、抽象,被子类继承

  • 对于公共的包,在父模块中直接引入,子模块的pom就简单了

2、parent中也可以使用dependencyManagement来管理依赖,那么子模块继承了parent模块之后,就实现不用写部分常用包的版本号了

  • 但是:我们还可以在子模块定义dependencyManagement标签,因为有些在parent中没有,比如Springboot项目的parent中并没有SpringCloud的版本,所以我们需要定义下

3、控制插件的版本

在SpringCloud项目中,我们一般使用两个管理版本间的依赖:

<!-- 管理springboot相关的依赖包版本 -->
<!-- 有了这个配置,我们的pom中引入springboot相关依赖包时就不用写版本号了 -->
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.12.RELEASE</version>
		<relativePath/>
</parent>


<!-- 管理SpringCloud相关的依赖包版本 -->
<!-- 有了这个配置,我们的pom中引入springcloud相关依赖包时就不用写版本号了 -->
<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Greenwich.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
</dependencyManagement>

参考:

Maven中dependencies和dependencyManagement的区别

SpringCloud版本规则和原理和在具体项目中的使用 - 杭州胡欣 - 博客园

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值