一、Maven 坐标
1. 坐标的核心作用
Maven 坐标是 Maven 仓库中资源的唯一标识符,作用是:
- 唯一标识当前项目本身
- 精准引入项目所需的第三方依赖(Jar 包)
- 解决依赖冲突,确保项目构建的一致性
2. 坐标三大核心组成
表格
| 组成部分 | 作用 | 命名规范 | 示例 |
|---|---|---|---|
groupId |
定义项目所属的组织 / 公司 | 通常为域名反写,保证全局唯一 | com.itheima、org.springframework |
artifactId |
定义项目 / 模块的名称 | 通常为项目名、模块名,小写 + 中划线分隔 | maven-demo、mysql-connector-java |
version |
定义项目 / 依赖的版本号 | 遵循语义化版本规范,SNAPSHOT 代表快照版 |
1.0-SNAPSHOT、5.1.46 |
3. 坐标的两种典型用法
-
定义项目自身坐标 :在
pom.xml的<project>根标签下配置,用于项目打包、部署时的唯一标识xml
<groupId>com.itheima</groupId> <artifactId>maven-demo</artifactId> <version>1.0-SNAPSHOT</version> -
引入第三方依赖 :在
<dependencies>标签下配置,用于引入外部 Jar 包xml
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency>
二、依赖范围(scope)
1. 核心作用
通过 <scope> 标签控制依赖 Jar 包在编译、测试、运行三个阶段的可见性,避免不必要的 Jar 包打入最终产物,减小包体积、避免冲突。
<scope>的默认值为compile,即全阶段可见。
2. 6 种依赖范围对比表
表格
| 依赖范围 | 编译 classpath | 测试 classpath | 运行 classpath | 核心特点 | 典型场景 |
|---|---|---|---|---|---|
compile |
✅ Y | ✅ Y | ✅ Y | 默认值,全阶段可见,会被打包到最终产物 | 业务工具包(如 logback、Spring 核心包) |
test |
❌ - | ✅ Y | ❌ - | 仅测试阶段可见,不会打包 | 单元测试框架(如 JUnit、TestNG) |
provided |
✅ Y | ✅ Y | ❌ - | 编译 / 测试可见,运行时由容器提供,不打包 | Web 容器相关 API(如 servlet-api、tomcat-catalina) |
runtime |
❌ - | ✅ Y | ✅ Y | 仅测试 / 运行时可见,编译时不可见,会打包 | JDBC 驱动(仅运行时需要,编译用接口) |
system |
✅ Y | ✅ Y | ❌ - | 与 provided 类似,需手动指定本地 Jar 包路径 | 本地私有 Jar 包(不推荐,破坏 Maven 依赖管理) |
import |
- | - | - | 仅用于 <dependencyManagement>,导入依赖管理配置 |
统一管理多模块项目的依赖版本 |