MVN--02

一、Maven 坐标

1. 坐标的核心作用

Maven 坐标是 Maven 仓库中资源的唯一标识符,作用是:

  • 唯一标识当前项目本身
  • 精准引入项目所需的第三方依赖(Jar 包)
  • 解决依赖冲突,确保项目构建的一致性

2. 坐标三大核心组成

表格

组成部分 作用 命名规范 示例
groupId 定义项目所属的组织 / 公司 通常为域名反写,保证全局唯一 com.itheimaorg.springframework
artifactId 定义项目 / 模块的名称 通常为项目名、模块名,小写 + 中划线分隔 maven-demomysql-connector-java
version 定义项目 / 依赖的版本号 遵循语义化版本规范,SNAPSHOT 代表快照版 1.0-SNAPSHOT5.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>,导入依赖管理配置 统一管理多模块项目的依赖版本
相关推荐
摇滚侠5 小时前
SpringMVC 入门到实战 文件上传 75-77
java·后端·spring·maven·intellij-idea
技术小结-李爽14 小时前
【工具】Maven的使用
java·maven
摇滚侠16 小时前
SpringMVC 入门到实战 拦截器 78-82
java·后端·spring·maven·intellij-idea
西凉的悲伤17 小时前
Spring Boot 与 Maven 依赖管理详解
spring boot·后端·maven·依赖管理
我登哥MVP18 小时前
SpringCloud 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
摇滚侠18 小时前
SpringMVC 入门到实战 异常处理 83-85
java·后端·spring·maven·intellij-idea
程序员小羊!19 小时前
17 Maven
java·maven
我登哥MVP19 小时前
SpringCloud 核心组件解析:服务网关
java·spring boot·后端·spring·spring cloud·java-ee·maven
摇滚侠1 天前
SpringMVC 入门到实战 视图解析器 44-48
java·spring·maven·intellij-idea
范什么特西2 天前
Maven中dependencies和dependencyManagement区别
java·开发语言·maven