基于Maven创建SpringBoot的2种方式
先说两种方式
- 继承SpringBoot提供的父Pom
- 在依赖关系管理<dependencyManagement>中通过添加带有 scope=import 的 spring-boot-dependencies 工件来进行依赖项管理
继承SpringBoot提供的父Pom
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent>
这样做的目的是将 Spring Boot 的父 POM 作为当前 Maven 项目的父级,以便继承其默认配置和依赖项。
对工件溯源可以看到spring-boot-starter-parent
的父pom为spring-boot-dependencies
,在spring-boot-dependencies
中对各种依赖版本进行了预定义,可以统一项目中的版本依赖,从而避免了潜在的版本冲突。在这种情况下,我们只需要声明所需的相关依赖,而不必显式指定版本号。
例如,如果要创建一个使用 Spring Web 模块的 Spring Boot 应用程序,则只需要添加以下依赖项即可,版本会自动指定为上面的2.5.0版本:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
在依赖关系管理<dependencyManagement>中通过添加带有 scope=import 的 spring-boot-dependencies 工件来进行依赖项管理
Spring Boot 提供父 POM,以便更轻松地创建 Spring Boot 应用程序。
但是,如果我们已经有父 POM 可以继承,则使用父 POM 可能并不总是可取的。在实践中,我们可能会受到设计规则或其他偏好的限制,无法使用不同的父级。如果我们不使用父 POM,我们仍然可以通过添加带有 scope=import 的spring-boot-dependencies 工件来从依赖项管理中受益:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
如需创建SpringWeb模块的SpringBoot,同理:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
另一方面,如果没有父 POM,我们将不再受益于插件管理。 这意味着我们需要显式添加
spring-boot-maven-plugin
:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Maven中依赖优先级关系
在 Maven 中,依赖项的版本解析遵循以下优先级:
- 项目内声明的依赖项版本具有最高优先级,即在项目 pom.xml 文件中直接声明的依赖项。
- 如果项目内没有声明依赖项版本,但在父项目的 dependencyManagement 标签中声明了版本,那么这个版本将被使用。
- 如果项目和父项目都没有声明依赖项版本,但是在 Maven 中心仓库中存在一个默认版本,那么将会使用这个版本。
- 如果上述情况都不符合,那么 Maven 将会尝试解析最新版本的依赖项。
参考文献:
分类:
Springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)