先给出一个例子:
<parent>
<artifactId>sky-take-out</artifactId>
<groupId>com.sky</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sky-server</artifactId>
<dependencies>
<dependency>
<groupId>com.sky</groupId>
<artifactId>sky-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.sky</groupId>
<artifactId>sky-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
每个依赖都没有引入版本号,是因为:
从父 POM 继承了版本号
若项目有父 POM,并且父 POM 里定义了依赖的版本号,子项目就能够直接使用该依赖,无需再指定版本号。像上面给出的 POM 文件,就定义了父项目:
<parent>
<artifactId>sky-take-out</artifactId>
<groupId>com.sky</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
而这个父项目也有它的父项目:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Spring Boot 的 spring-boot-starter-parent
POM 文件包含了 <dependencyManagement>
标签,此标签里定义了一系列常用依赖的版本。当项目继承自 spring-boot-starter-parent
时,就能使用这些预定义的版本,无需再次指定。
例如,在 spring-boot-starter-parent
的 <dependencyManagement>
部分,可能已经定义了 spring-boot-starter-web
的版本:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.4</version>
</dependency>
<!-- 其他依赖 -->
</dependencies>
</dependencyManagement>
可以通过下面的方式查看 spring-boot-starter-parent
的 <dependencyManagement>
内容:
- 前往 Maven 中央仓库 搜索
spring-boot-starter-parent
,找到对应版本(如3.3.4
)的 POM 文件。 - 查看 POM 文件中的
<dependencyManagement>
部分,了解所有预定义的依赖版本。