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>,导入依赖管理配置 统一管理多模块项目的依赖版本
相关推荐
小江的记录本1 天前
【Java基础】集合框架: ArrayList vs LinkedList 核心区别、扩容机制(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
Oo_行者_oO2 天前
Maven 完全教程与实战指南
maven
小碗羊肉2 天前
Maven高级
java·开发语言·maven
zhougl9962 天前
Maven build配置 补
java·maven
それども3 天前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
huaiixinsi4 天前
Java 后端面试高频题整理(02)
java·开发语言·spring·面试·职场和发展·架构·maven
鱼鳞_5 天前
苍穹外卖-Day01(开发环境搭建)
java·spring boot·spring·maven
jio本小子5 天前
Windows 安装 Java17 + Maven + MySQL 开发环境教程,全程安装到 D 盘
windows·mysql·maven
砚底藏山河5 天前
股票数据API接口:(沪深A股)如何获取股票当天逐笔交易数据
java·windows·python·maven