温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

依赖范围如何设置

发布时间:2026-07-24 23:11:48 来源:亿速云 阅读:106 作者:小樊 栏目:编程语言

Maven 中,“依赖范围(scope)”用来控制依赖在哪些阶段可用(编译、测试、运行等),以及是否会被传递。常见设置方式如下:


一、Maven 常用依赖范围

scope 说明 典型场景
compile(默认) 编译、测试、运行都可用 项目核心依赖
test 只在测试编译和运行阶段可用 单元测试(JUnit、Mockito)
provided 编译、测试可用,运行时由容器提供 Servlet API、JDK、应用服务器
runtime 编译不可用,测试和运行可用 JDBC 驱动
system 类似 provided,但需手动指定路径(不推荐) 本地 jar
import 只在 <dependencyManagement> 中使用 BOM 引入

二、如何设置依赖范围

pom.xml 中通过 <scope> 标签设置:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.30</version>
    <scope>compile</scope> <!-- 可省略,默认 -->
</dependency>

三、常见示例

1️⃣ 测试依赖(test)

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

✅ 只在 src/test 中可用


2️⃣ 容器提供依赖(provided)

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

✅ 编译期用,运行时由 Tomcat 提供


3️⃣ 运行时依赖(runtime)

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>

✅ 编译时不需要,运行时才用


4️⃣ system(不推荐)

<dependency>
    <groupId>com.xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/xxx.jar</systemPath>
</dependency>

⚠ 不利于可移植性


5️⃣ import(BOM)

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.18</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

✅ 用于统一版本管理


四、依赖范围总结口诀

compile 到处用,test 只测用,
provided 容器给,runtime 跑时用,
system 本地玩,import 管版本。


如果你用的是 GradleIvy,或想了解 依赖冲突 / 传递性依赖,也可以继续问我。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI