先给出一个例子:
<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>
部分,了解所有预定义的依赖版本。