SpringBoot的pom.xml文件中,scope标签有几种配置?

1.compile(默认)

含义 :表示该依赖在项目的所有阶段(编译、测试、运行)都需要。

当你依赖一个库,并且这个库是你项目的核心部分,比如 Spring Boot 的spring - boot - starter - web,它的scope就是compile。这意味着在编译项目代码时需要它,在运行单元测试时也需要它,并且最终在打包后的应用程序运行时同样需要它

示例:

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring - boot - starter - data - jpa</artifactId>
    <scope>compile</scope>
</dependency>

2. test

含义: 这种依赖只在测试阶段(例如执行单元测试或集成测试)需要

当你有一些专门用于测试的库,如junit - vintage - engine(用于在 JUnit 5 中运行 JUnit 4 风格的测试),你可以将其scope设置为test。这样,在编译主代码或者打包运行应用程序时,这些测试库不会被包含进去,从而减小了最终打包产物的体积。

示例:

复制代码
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit - vintage - engine</artifactId>
    <scope>test</scope>
</dependency>

3.provided

含义: 表示这个依赖在编译和测试阶段需要,但在运行时,期望由运行环境(如应用服务器)来提供。

一个典型的例子是 使用外置tomcat。当你开发一个 Web 应用时,你需要 应用服务器(如 Tomcat)时,服务器本身已经提供了tomcat,所以你不希望将其打包到你的应用程序中。

示例:

复制代码
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
</dependency>

4.runtime

含义: 这个依赖**在编译阶段不是必需的,但在运行和测试阶段是需要的。**比如数据库驱动,在编译代码时,你不需要它,但是在运行应用程序连接数据库以及进行测试时就需要它。

示例:

复制代码
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql - connector - java</artifactId>
    <scope>runtime</scope>
</dependency>

在这里,mysql - connector - java用于在运行时连接 MySQL 数据库,编译阶段不需要该驱动类,所以scope设置为runtime。

相关推荐
葫芦和十三1 小时前
图解 MongoDB 28|块与迁移:balancer 怎么均衡数据
后端
葫芦和十三1 小时前
图解 MongoDB 27|分片策略:范围分片 vs 哈希分片
后端·mongodb·agent
paopaokaka_luck2 小时前
英语单词学习系统的设计与实现(基于艾宾浩斯遗忘曲线的智能复习机制、语音朗读、多题型测试与错题自动收录、Echarts图形化分析)
vue.js·spring boot·后端·echarts
我叫黑大帅2 小时前
MySQL 并发插入竞态问题:原子写入实践指南
后端·mysql·面试
zhangxingchao3 小时前
AI大模型核心八:从 Agent Skill、长文档 RAG 到知识库更新与训练策略
前端·人工智能·后端
我叫黑大帅4 小时前
别再手动写 updated_at了,这坑我踩过
后端·面试·go
zhangxingchao4 小时前
AI大模型核心七:从 Workflow、RAG、记忆治理到幂等性
前端·人工智能·后端
犀利豆5 小时前
AI in Harness(二)
java·人工智能·后端
IT_陈寒5 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端
bkl_92136 小时前
GPT-Image-2 文生图:如何稳定生成完整的人物全身照?
后端·gpt·restful