先給出一個例子:
<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>
?部分,了解所有預定義的依賴版本。