springboot之依赖版本管理

2023年7月23日13:05:11

       我们在使用springboot项目的时候,在我们的pom文件中,我们引入的依赖通常不需要制定依赖的版本,但是maven却能够给我们下载正常的jar包。

      在普通的spring项目的中我们需要自己去定义依赖的版本,经常会遇到jar包冲突的情况,springboot自动的帮我们管理这些依赖的版本,给我们的开发省去了不必要的麻烦,提高我们的开发效率!

       那么它是怎么做到的呢。

      下面我们以一个简单的例子来说明一下springboot是怎么做到的依赖版本的自动管理。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

所有的springboot项目都会依赖这个父pom,在这个父pom我们可以都看到,它又依赖了一个的pom,

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.1.6.RELEASE</version>
  <relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<artifactId>spring-boot-starter-parent</artifactId>

再看一下spring-boot-dependencies这个pom

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<packaging>pom</packaging>
<properties>
  <activemq.version>5.15.9</activemq.version>
  <antlr2.version>2.7.7</antlr2.version>
  <appengine-sdk.version>1.9.75</appengine-sdk.version>
  <artemis.version>2.6.4</artemis.version>
  <aspectj.version>1.9.4</aspectj.version>
                  。。。
</properties>
<dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-amqp</artifactId>
    <version>${activemq.version}</version>
   </dependency>
           。。。
  <dependencies>
<dependencyManagement>

在这个顶级的pom文件中,<properties>标签中主要是管理了各个依赖的版本号,而<dependencyManagement>里面声明了常用的依赖并在<version>中使用了上面<properties>的属性值,定义依赖的版本。而我们在自己的项目中如果需要使用某个依赖,只需要声明<groupId>和<artifacted>就可以引用到这个pom里面声明的依赖和对应的版本。

如果要引入一个在spring-boot-dependencies没有定义的依赖,那么则需要在自己的pom中定义依赖的版本。

PS:maven的<dependencyManagement>标签里面定义的依赖只起到一个声明的作用,只有在项目中显式的声明依赖,maven才会真正的去给项目下载这个依赖的jar。

  • 作者:狂奔的程序员1
  • 原文链接:https://blog.csdn.net/weixin_42594382/article/details/99543624
    更新时间:2023年7月23日13:05:11 ,共 1737 字。