dependencyManagement标签和dependencies标签的区别

128 阅读1分钟

一、概述

我们在写一个pom.xml文件时经常会发现有dependencyManagement标签和dependencies标签,当我们不小心导入GAV坐标到dependencyManagement标签就会发现导入的依赖不生效甚至于报错,我们就把他们正确放到dependencies标签就会好了,但是不知道dependencyManagement标签有什么用处,接下来我们就介绍他俩的区别

二、dependencyManagement标签和dependencies标签的区别

1、正确的dependence案例

<dependencies>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
  </dependency>
</dependencies>

一个正确的依赖导入就如这样有GAV三者缺一不可,但是在开发中我们经常不只一个工程,有时候导入的依赖版本有所差别,可能会产生依赖冲突且不好管理,我们就想办法避免这个问题,于是就有了dependencyManagement标签。

2、正确的dependencyManagement案例

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
  </dependencies>
</dependencyManagement>

这个标签只负责控制版本的问题当引入这个标签后,之后的所有该工程的子工程都不用写版本了,但是这样也会有一个问题,当引入依赖过多时,需要更改时不好管理和更改,于是又引入了properties标签,案例如下

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <jjwt.version>0.9.1</jjwt.version>
  <lombok.version>1.18.24</lombok.version>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

我们就用这种方法来更好的管理依赖,定义版本变量、通过dependencyManagement标签来锁定依赖版本,子模块使用就不需要指定依赖版本了。