Maven 依赖范围 Maven 依赖范围在 Maven 中依赖范围Scope主要用于控制依赖在不同构建阶段编译、测试、运行和类路径中的可用性以及是否参与最终的打包。Maven 提供了 6 种依赖范围以下是它们的核心特性、作用矩阵及典型应用场景1. compile默认范围特性全生命周期依赖。如果未显式指定scopeMaven 默认使用该范围。作用阶段对主代码编译、测试代码编译、项目运行均有效。打包✅ 会包含在最终构建产物中。典型场景项目中全程需要的核心依赖如spring-core、log4j等。2. test测试专属特性仅在测试编译和测试执行阶段有效。在主代码中无法 import 此类依赖的类否则会报错。作用阶段❌ 主代码编译无效✅ 测试代码编译/执行有效❌ 运行时无效。打包❌ 不会包含在最终产物中。典型场景单元测试或集成测试框架如JUnit、Mockito。3. provided运行时由容器提供特性编译和测试阶段需要该依赖但运行时由 JDK 或 Web 容器如 Tomcat提供。作用阶段✅ 主代码编译有效✅ 测试有效❌ 运行时不生效。打包❌ 不会包含在构建产物中避免与容器自带的包产生冲突。典型场景servlet-api、lombok。4. runtime运行时必需特性编译主代码时不需要通常只需要接口但在执行测试或运行项目时需要具体的实现类。作用阶段❌ 主代码编译无效✅ 测试有效✅ 运行时有效。打包✅ 会包含在构建产物中。典型场景JDBC 驱动实现如mysql-connector-java因为编译时只需 JDK 提供的 JDBC 接口运行时才需要具体的数据库驱动。5. system系统级本地依赖特性与provided类似但不会从 Maven 仓库获取而是从本地系统文件中获取。必须配合systemPath显式指定 JAR 包的绝对路径。注意实际开发中应谨慎使用因为它破坏了项目的可移植性。如果必须使用且需要打入可执行 JAR 包还需在 Spring Boot 等打包插件中配置includeSystemScopetrue/includeSystemScope。典型场景引入本地私有 SDK 或未发布到 Maven 中央仓库的旧版第三方 JAR 包。6. import依赖管理导入特性它不会对三种 classpath 产生实际的物理影响而是专门用于dependencyManagement标签内。用法必须同时结合typepom/type使用用于将另一个 POM 文件中的dependencyManagement配置导入到当前项目中常用于统一版本控制BOM。 核心依赖范围速查矩阵依赖范围 (Scope)主代码编译测试代码运行/打包典型举例compile(默认)✅✅✅ (打包)spring-coretest❌✅❌ (不打包)junitprovided✅✅❌ (不打包)servlet-apiruntime❌✅✅ (打包)jdbc驱动system✅✅❌ (不打包)本地外部JAR包你之前提到的那个spring_web冲突报错其实和依赖范围配置不当也有直接关系。需要我帮你整理一份排查步骤吗