MVN--02

一、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>,导入依赖管理配置 统一管理多模块项目的依赖版本
相关推荐
雪芽蓝域zzs2 天前
第 1 章:IDEA 创建 SpringBoot3.5.16 Maven 项目
java·maven·intellij-idea
雪芽蓝域zzs3 天前
第 1 章:IDEA 全局配置 Maven + 新建 SpringBoot3 Maven 项目
java·maven·intellij-idea
代码什么用3 天前
Maven&Nexus
java·maven
code2cat3 天前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
CarIise5 天前
Spring 框架:多配置文件、开发方式与 IOC 注解
junit·maven·jar
博风5 天前
eclipse中配置maven,以及在本地使用maven。
java·eclipse·maven
少年的范儿6 天前
IntelliJ IDEA 配置 JDK 21 与 Maven 教程(Windows):开发环境配置与验证
java·jdk·maven·intellij idea
peach8 天前
同样是装依赖,为什么 npm 长成 node_modules,Maven 长成 .m2
npm·node.js·maven
屈冠成8 天前
ShopXO商城系统测试报告
开发语言·spring·maven·lua
jianxuan10 天前
Spring Boot + Maven 接入 Allatori:从普通打包到可选混淆发布
spring boot·python·maven