如果你写 Java 或 Kotlin 时遇到过这几种情况,这门课就值得花时间:pom.xml 里依赖一多就不知道谁把谁覆盖了;mvn package 跑出来的 jar 在本地能跑、换台机器就报 ClassNotFoundException;多个模块互相引用,改了 A 模块 B 模块却没重新编译;想加个插件但只会从别人项目里复制粘贴。这些都是 Maven 层面的问题,跟业务代码写得好不好没关系。

先确认缺口在哪

Maven 是那种"天天在用、但没系统学过"的典型工具。很多人靠 IDE 自动生成的骨架和搜索引擎拼出来的配置在维持项目运转,一旦偏离常见套路就卡住。你可以用下面几个问题自查:

  • 坐标(groupId / artifactId / version)三者的作用分别是什么,SNAPSHOT 和正式版本在依赖解析上有什么区别?
  • 依赖的 scope(compile、provided、runtime、test、system)各自在编译、测试、打包、运行四个阶段里是否参与 classpath?
  • 依赖传递时,"最短路径优先"和"最先声明优先"两条规则冲突时按哪个走?如何用 exclusions 手动切断?
  • 生命周期的 default、clean、site 三套分别包含哪些 phase,执行 mvn install 实际触发到哪一步?
  • 父 POM 的 dependencyManagement 和 dependencies 区别是什么,为什么多模块项目几乎一定要用前者?

上面有两条以上答不完整,说明你需要补的不是"会不会敲命令",而是 Maven 的模型本身。这门课的顺序大致是:先讲依赖管理和构建工具两个定位,再拆 Maven 的工作机制,然后才是安装、配置和工程搭建,最后落到分模块与常见插件。也就是说,它没有一上来就教你写 pom,而是先把"它替谁干活、怎么干"讲清楚——这一点对后面排查问题很关键。

核心不是配置,是依赖解析

Maven 最容易出问题的部分永远是依赖树。课程里对依赖传递、可选依赖、排除依赖、依赖调解这几块着墨较多,这部分建议不要只看,要跟着在自己项目的根目录执行 mvn dependency:tree,对着输出看冲突从哪来的。真正能解决线上"同一个类有两份、版本不一致"的问题,靠的就是读懂这棵树加上会写 dependencyManagement 锁定版本。

另一个值得留意的是仓库与镜像部分。本地仓库、私服、中央仓库三者的查找顺序,以及 settings.xml 里 mirror 的 mirrorOf 写成 * 和写成 central 的差别,会直接影响你在公司内网能不能拉到包。这些细节自己踩坑很费时间。

配套练习怎么做

光看视频不动手,Maven 是学不会的。建议按三步推进:第一步,新建一个单模块项目,手动把某个常用依赖换成旧版本,观察编译报错,再用排除依赖的方式修好;第二步,拆成三个模块(父、工具模块、应用模块),用 dependencyManagement 统一管理版本,跑一遍 mvn clean install;第三步,给项目加一个打包插件,指定 mainClass,产出一个可以直接 java -jar 运行的包。这三步做完,日常工作中大部分 Maven 场景都能覆盖。

看完应该能回答

  • 新项目拉下来依赖下载失败,按什么顺序排查(本地仓库、镜像配置、网络代理、坐标是否正确)?
  • 为什么多模块项目里子模块不需要重复声明版本号?
  • 如何让某个依赖只在测试期可见,不进最终产物?
  • 父 POM 里 <packaging>pom</packaging> 是什么意思,不写会怎样?

如果这些问题你读完课程目录就能自己讲清楚,那这套内容对你是复习;如果讲不清楚,那它就是你需要的那块拼图。别跳过简介和工作原理两节去直接看实战——Maven 的坑基本都藏在模型里,而不在命令里。

尚硅谷2023年11月maven精华版

Maven构建工具深度解析

编辑点评

深入浅出,系统讲解Maven的核心概念、配置与实战,适合初学者及进阶者。

⭐ 编辑推荐

尚硅谷2023年11月maven精华版,全面掌握Maven构建工具。

课程亮点

• 系统讲解Maven核心概念
• 实战案例丰富
• 适合不同层次学习者

课程目录

├──视频
| ├──00-教程简介.mp4 10.43M
| ├──01-Maven简介之依赖管理工具.mp4 95.26M
| ├──02-Maven简介之构建工具.mp4 63.94M
| ├──03-Maven简介之什么是Maven.mp4 21.18M
| ├──04-Maven简介之工作原理.mp4 9.34M
| ├──05-Maven的安装和环境配置.mp4 17.27M
| ├──06-Maven的功能配置.mp4 34.16M
| ├──07-IDEA配置本地Maven软件.mp4 15.94M
| ├──08-概念梳理之Maven工程的GAVP.mp4 20.06M
| ├──09-IDEA创建Maven的java工程.mp4 40.84M
| ├──10-IDEA创建Maven的web工程(方式一).mp4 21.28M
| ├──11-IDEA创建Maven的web工程(方式二).mp4 13.41M
| ├──12-将Maven的web工程部署到tomcat中.mp4 8.41M
| ├──13-Maven工程的项目结构.mp4 18.11M
| ├──14-构建的概念和构建的过程.mp4 8.21M
| ├──15-构建命令之编译和清理.mp4 25.00M
| ├──16-构建命令之测试.mp4 36.78M
| ├──17-构建命令之报告.mp4 8.18M
| ├──18-构建命令之打包.mp4 27.06M
| ├──19-构建命令之安装.mp4 19.82M
| ├──20-通过坐标查找jar.mp4 14.96M
| ├──21-通过IDEA实现可视化构建.mp4 20.60M
| ├──22-构建插件、命令、生命周期之间的关系.mp4 20.27M
| ├──23-依赖管理的概念.mp4 18.88M
| ├──24-依赖管理配置.mp4 13.47M
| ├──25-依赖版本统一提取和维护.mp4 36.89M
| ├──26-依赖范围之compile.mp4 38.90M
| ├──27-依赖范围之test.mp4 11.26M
| ├──28-依赖范围之provided.mp4 26.26M
| ├──29-依赖范围之runtime、system、import.mp4 23.95M
| ├──30-Maven工程依赖下载失败的原因.mp4 14.44M
| ├──31-Maven工程依赖下载失败的解决方案.mp4 23.80M
| ├──32-通过脚本批量删除缓存文件.mp4 5.98M
| ├──33-Maven工程的构建配置之自定义打包名称.mp4 13.23M
| ├──34-Maven工程的构建配置之指定打包文件.mp4 29.13M
| ├──35-Maven工程的构建配置之配置插件.mp4 21.33M
| ├──36-Maven工程依赖的传递特性.mp4 27.66M
| ├──37-Maven工程依赖的传递原则.mp4 38.61M
| ├──38-Maven依赖冲突之短路优先原则.mp4 18.65M
| ├──39-Maven依赖冲突之先声明优先原则.mp4 19.49M
| ├──40-Maven依赖冲突之手动排除依赖.mp4 24.74M
| ├──41-Maven工程继承的概念.mp4 20.46M
| ├──42-Maven工程的继承关系.mp4 24.72M
| ├──43-Maven父工程统一依赖管理.mp4 26.87M
| ├──44-Maven工程的聚合关系.mp4 24.19M
| ├──45-Maven私服简介.mp4 13.94M
| ├──46-Maven私服的优势.mp4 15.72M
| ├──47-Nexus的下载和安装.mp4 36.43M
| ├──48-Nexus初始设置.mp4 13.35M
| ├──49-Nexus的各种仓库.mp4 14.33M
| ├──50-通过Nexus下载jar.mp4 80.62M
| ├──51-将jar部署到Nexus中.mp4 32.78M
| ├──52-引用别人部署的jar.mp4 10.37M
| ├──53-Maven综合案例之项目需求和结构分析.mp4 8.03M
| ├──54-Maven综合案例之创建父工程.mp4 17.38M
| └──55-Maven综合案例之创建子工程.mp4 50.26M
├──代码.zip 16.57M
├──课件.zip 2.64M
└──软件.zip 254.64M

适合人群

  • Java后端开发者
  • Maven工具使用者
  • 构建工具学习者

学习收获

掌握Maven构建流程
学会依赖管理和项目构建
提升项目开发效率

祝您学习愉快!

学有所成,前程似锦!

课程目录

视频
00-教程简介.mp4 10.43M
01-Maven简介之依赖管理工具.mp4 95.26M
02-Maven简介之构建工具.mp4 63.94M
03-Maven简介之什么是Maven.mp4 21.18M
04-Maven简介之工作原理.mp4 9.34M
05-Maven的安装和环境配置.mp4 17.27M
06-Maven的功能配置.mp4 34.16M
07-IDEA配置本地Maven软件.mp4 15.94M
08-概念梳理之Maven工程的GAVP.mp4 20.06M
09-IDEA创建Maven的java工程.mp4 40.84M
10-IDEA创建Maven的web工程(方式一).mp4 21.28M
11-IDEA创建Maven的web工程(方式二).mp4 13.41M
12-将Maven的web工程部署到tomcat中.mp4 8.41M
13-Maven工程的项目结构.mp4 18.11M
14-构建的概念和构建的过程.mp4 8.21M
15-构建命令之编译和清理.mp4 25.00M
16-构建命令之测试.mp4 36.78M
17-构建命令之报告.mp4 8.18M
18-构建命令之打包.mp4 27.06M
19-构建命令之安装.mp4 19.82M
20-通过坐标查找jar.mp4 14.96M
21-通过IDEA实现可视化构建.mp4 20.60M
22-构建插件、命令、生命周期之间的关系.mp4 20.27M
23-依赖管理的概念.mp4 18.88M
24-依赖管理配置.mp4 13.47M
25-依赖版本统一提取和维护.mp4 36.89M
26-依赖范围之compile.mp4 38.90M
27-依赖范围之test.mp4 11.26M
28-依赖范围之provided.mp4 26.26M
29-依赖范围之runtime、system、import.mp4 23.95M
30-Maven工程依赖下载失败的原因.mp4 14.44M
31-Maven工程依赖下载失败的解决方案.mp4 23.80M
32-通过脚本批量删除缓存文件.mp4 5.98M
33-Maven工程的构建配置之自定义打包名称.mp4 13.23M
34-Maven工程的构建配置之指定打包文件.mp4 29.13M
35-Maven工程的构建配置之配置插件.mp4 21.33M
36-Maven工程依赖的传递特性.mp4 27.66M
37-Maven工程依赖的传递原则.mp4 38.61M
38-Maven依赖冲突之短路优先原则.mp4 18.65M
39-Maven依赖冲突之先声明优先原则.mp4 19.49M
40-Maven依赖冲突之手动排除依赖.mp4 24.74M
41-Maven工程继承的概念.mp4 20.46M
42-Maven工程的继承关系.mp4 24.72M
43-Maven父工程统一依赖管理.mp4 26.87M
44-Maven工程的聚合关系.mp4 24.19M
45-Maven私服简介.mp4 13.94M
46-Maven私服的优势.mp4 15.72M
47-Nexus的下载和安装.mp4 36.43M
48-Nexus初始设置.mp4 13.35M
49-Nexus的各种仓库.mp4 14.33M
50-通过Nexus下载jar.mp4 80.62M
51-将jar部署到Nexus中.mp4 32.78M
52-引用别人部署的jar.mp4 10.37M
53-Maven综合案例之项目需求和结构分析.mp4 8.03M
54-Maven综合案例之创建父工程.mp4 17.38M
55-Maven综合案例之创建子工程.mp4 50.26M
代码.zip 16.57M
课件.zip 2.64M
软件.zip 254.64M