springboot之依赖版本管理

首页 / 新闻资讯 / 正文

       我们在使用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。