一、Maven
1.什么是Maven
-
Maven 的定义
- 官方定位:Apache Maven 是一款项目管理与理解工具,基于项目对象模型(POM),可通过集中式信息管理项目的构建、报告与文档。
- 通俗理解:它是项目管理工具,通过**
pom.xml配置自动获取依赖的 jar 包**,替代手动添加 jar 包的繁琐操作。
-
核心特征
- 基于 POM(Project Object Model):以配置文件(
pom.xml)为核心管理项目信息。 - 功能覆盖:构建(编译、打包等)、报告生成、文档管理等。
- 依赖管理:自动下载、管理项目所需的 jar 包,解决手动引入的版本冲突、重复等问题。
- 基于 POM(Project Object Model):以配置文件(
-
作用价值主要用于简化 Java 项目的构建与依赖管理流程,提升开发效率,是 Java 生态中主流的项目管理工具之一。
2.项⽬构建
Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的⾃动化项⽬构建⽅式
- 功能特点 Maven 提供跨平台的标准化自动化构建流程,替代手动重复执行 "编译→测试→打包→发布" 的繁琐步骤,通过简单命令即可完成全流程。
- 操作示例
- 执行
package命令(如 IDE 中点击对应选项),Maven 会自动将项目编译后的 class 文件打包为jar(普通 Java 项目)或war(Web 项目)包; - 打包结果会生成在项目的**
target**目录下,同时控制台会输出 "BUILD SUCCESS" 确认构建成功。
- 执行

- clean:清理项目编译生成的文件(如 target 目录)
- compile:编译项目的 Java 源代码为 class 文件
- test:执行项目的单元测试代码
- package:将编译后的文件打包为 jar/war 包
- install:将打包好的包安装到本地 Maven 仓库,供其他项目依赖
- deploy:将包发布到远程 Maven 仓库,供团队共享
这些命令按顺序执行(如执行 package 会自动先执行 compile、test),覆盖了项目从清理到发布的全流程。


打包就是把所有的class⽂件,全部放在⼀起,打成jar包或者war包
jar包和war包都是⼀种压缩⽂件
jar包就是把开发⼈员已经写好的⼀些代码进⾏打包.打好的jar包就可以引⼊到其他项⽬中,也可以直
接使⽤这些jar包中的类和属性.另外也可以打成可执⾏jar包,这样的包就可以通过java-jar命令来执
⾏
war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西,通常⽤于⽹站.
二、依赖管理
- 功能逻辑 Maven 通过
pom.xml配置文件管理项目依赖(即运行所需的 jar 包),替代手动下载、添加 jar 包的操作,只需配置依赖的 "坐标"(groupId/artifactId/version),即可自动下载并引入依赖。 - 操作示例 以引入 MySQL 驱动为例:
- 手动方式:需自行下载
mysql-connector-java的 jar 包,再添加到项目中; - Maven 方式:在
pom.xml的<<dependencies>标签内添加依赖坐标(如groupId:mysql、artifactId:mysql-connector-java、version:8.0.30),刷新后 Maven 会自动下载并引入该依赖。
- 手动方式:需自行下载
2.1创建项目配置的对应关系

- Name :就是项目在 IDE / 文件夹里显示的 "根文件夹名称"(比如这里的
demo,对应最外层的demo文件夹)。 - Group :表示 "项目的归属 / 组织",一般用 "域名反转 + 创建者 / 团队名"(比如
com.dyk,对应包结构里的com→dyk)。 - Artifact :可以理解为 "项目的具体标识"(比如
demo,对应包结构里dyk下面的demo)。
2. 2为啥会生成com→dyk→demo三层包?
因为 Package name(包名)的默认规则是「Group + "." + Artifact」 :这里Group=com.dyk、Artifact=demo,所以Package name默认就是com.dyk.demo------ 而 Java 的包名是 "点分隔对应文件夹层级",所以com.dyk.demo就会生成com→dyk→demo三层文件夹结构。

2.3.总结:
Name→ 项目根文件夹名(比如最外层的demo文件夹);Group + Artifact→ 决定Package name(比如com.dyk.demo);Package name→ 对应 Java 代码的根包结构(com→dyk→demo)。
举个例子:如果把Group改成org.baidu、Artifact改成search,那Package name会默认是org.baidu.search,包结构就会是org→baidu→search~
| 配置项 | 中文释义 | 核心作用 | 我的配置值 | 对应路径 / 结构 | 通俗理解 |
|---|---|---|---|---|---|
| Name | 项目名称 | IDE / 文件系统显示的「项目根文件夹名」(仅用于可视化,无技术作用) | demo | 本地文件夹:D:\xxx\demo(最外层文件夹) |
给项目起的 "外号"(人看的) |
| Group | 组织 / 归属标识 | 标识项目的归属(公司 / 团队 / 创建者),遵循 "域名反转" 规则 | com.dyk | 包结构前两层:com → dyk |
项目 "主人" 的标识 |
| Artifact | 项目标识 | Maven/Gradle 的核心标识(打包文件名 / 依赖坐标),也是包结构最后一层的名称 | demo | 包结构最后一层:dyk → demo |
项目的 "技术代号"(工具用的) |
| Package name | 代码根包名 | Java 代码的根包路径,默认 = Group + "." + Artifact | com.dyk.demo | 完整包结构:com → dyk → demo |
代码的 "根目录地址" |
| JDK/Java | Java 版本 | 指定项目编译 / 运行的 Java 版本 | 17 | 无直接路径关联,影响代码编译规则 | 项目的 "运行环境版本" |
| Packaging | 打包方式 | 项目打包后的格式(Jar/War) | Jar | 打包后文件:demo-0.0.1-SNAPSHOT.jar |
项目最终的 "交付格式" |
| 配置项 | 中文释义 | 核心作用 | 命名规范 |
|---|---|---|---|
Name |
项目名称 | 给项目起一个「人类易读」的名字,仅用于 IDE / 文件系统显示(无技术层面作用) | 可包含空格、大写,如Demo Project |
Artifact |
项目标识 | Maven/Gradle 的核心标识,对应项目打包后的文件名 + 依赖坐标(技术核心) | 小写、无空格,用短横线分隔,如demo/user-service |
Package name |
包名 | Java 代码的根包路径(如com.dyk.demo),决定代码的目录结构和类的包声明 |
全小写、域名反转,如com.dyk.demo |
问题:
-
为啥是三层包? 完全是因为
Package name = com.dyk.demo------ Java 的包名规则是 "点分隔对应文件夹层级",com.dyk.demo里有两个点,自然拆分出com(第一层)、dyk(第二层)、demo(第三层)三层文件夹。 -
**Artifact 的核心价值(不止是包名最后一层)**除了对应包结构最后一层,Artifact 还是:
- Maven 打包后的文件名核心:
Artifact + 版本号 + 后缀(如demo-1.0.0.jar); - 依赖坐标的核心:
Group:Artifact:Version(如com.dyk:demo:1.0.0),发布到 Maven 仓库时靠这个唯一标识。
- Maven 打包后的文件名核心:
-
配置修改的影响(避免踩坑)
- 改
Name:只改外层文件夹名,不影响包结构 / 依赖; - 改
Artifact:会改包结构最后一层 + 打包文件名 + 依赖坐标; - 改
Package name:只改代码包结构,不影响项目文件夹名 / 依赖坐标。
- 改
3.MavenHelp插件
Maven Helper 是一款集成在 IDEA 等 IDE 中的插件,主要用于辅助 Maven 项目的依赖管理,核心功能及作用如下:
- 依赖分析
- 可视化展示项目依赖树,清晰呈现依赖的层级关系;
- 快速识别依赖冲突(如同一 jar 包的不同版本冲突),并提供冲突解决建议(如排除多余版本)。
- 功能辅助
- 支持快速执行 Maven 命令(如 compile、package);
- 可查看依赖的详细信息(如版本、来源仓库),简化依赖管理的操作流程。
它是 Maven 项目开发中解决依赖问题、提升管理效率的常用工具。
二、Maven 仓库
-
本地仓库
- 是本地机器上的缓存仓库,用于存储已下载的依赖包;
- 位置可在 IDE 的 Maven 设置中查看(如截图中
D:\Maven\.m2\repository),项目优先从本地仓库获取依赖。

-
中央仓库
- 是 Maven 官方维护的全球唯一远程仓库,地址为
https://repo1.maven.org/maven2/; - 可通过
mvnrepository.com查询依赖坐标,当本地仓库无对应依赖时,会从中央仓库下载。
- 是 Maven 官方维护的全球唯一远程仓库,地址为
-
私有仓库(私服)
- 由企业 / 团队搭建的内部仓库,需权限访问;
- 用于存储企业内部开发的依赖包,同时可缓存中央仓库的资源,提升团队内的依赖下载效率。
二、依赖下载流程(含私服)
当项目需要依赖时,Maven 的查找顺序为:
- 先查本地仓库,存在则直接使用;
- 本地仓库无则查私有仓库,存在则返回;
- 私有仓库无则查中央仓库,存在则下载并缓存到私有仓库、本地仓库;若中央仓库也无,则报错。