51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【WEB 系列】SpringBoot 引入的依赖为什么没有版本号

  • 在入门 springboot 的时候我相信很多朋友都有过这样的疑问, 为什么 spring boot 项目在 pom 文件引入的某些依赖不需要指定版本呢? 但是却并不妨碍我们使用或下载 jar 包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mobaijun</groupId>
    <artifactId>spring_mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 父项目 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
              <!-- 这个版本号是我自己添加的 -->
            <version>2.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <!-- 这个版本号是我自己添加的 -->
            <version>2.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
</project>
  • 在 Spring Boot 项目下的 pom.xml 文件中通常都会有一个标签,用来指定继承的父 pom,如下:
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
  • 可以点击这个 spring-boot-starter-parent 依赖进去看看里面发生了什么?
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>
  • 看到 spring-boot-starter-parent 也继承了一个 pom, 在进入 spring-boot-dependencies 这个依赖我们就可以看到了, 顶级的 pom 文件的坐标如下,通过标签我们应该知道这个 pom 文件时用来管理依赖版本号的。
<modelVersion>4.0.0</modelVersion>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-dependencies</artifactId>
 <version>2.2.1.RELEASE</version>
 <packaging>pom</packaging>
  • 在这个 pom.xml 中定义了很多的标签用来管理引入依赖和插件的版本。
    在引入依赖的时候,即使你不指定依赖的版本,Spring Boot 也会通过 Maven 的继承关系,引入依赖的版本,从而完成版本的统一。
    另外不是所有依赖都在 parent 中指定了版本,对于没有指定版本的依赖依然需要手动指定版本否则会出现 No version of dendency 的异常
    当然你也可以不使用 Maven 继承的依赖版本,只需要在引入依赖的时候指定具体的依赖版本即可。
赞(0)
未经允许不得转载:工具盒子 » 【WEB 系列】SpringBoot 引入的依赖为什么没有版本号