一.Maven
搭建工具前提:
社区版idea版本:2021.1 -2022.1.4(卸载安装idea时要删除注册表)
专业版idea版本:无要求。
Q:为什么要2021/2022版而不是最新版?
A:版本才能使用Spring Boot Helper插件
1.什么是Mavan
![](https://i-blog.csdnimg.cn/direct/be1f4c6ee64943d0941d6b4c8a42d90b.png)
![](https://i-blog.csdnimg.cn/direct/9adebe42152c47f79f7e302d5a28eac9.png)
![](https://i-blog.csdnimg.cn/direct/7e10af28019a4fa9bda762b767fccb74.png)
点击 Create, 就创建好了⼀个Maven项⽬。
2.Mavan的核心功能
1.项目构建
![](https://i-blog.csdnimg.cn/direct/737f0574a64446cf838026aa2bc2261a.png)
![](https://i-blog.csdnimg.cn/direct/e5d861bb45d04af69d8fa9de4d291c89.png)
![](https://i-blog.csdnimg.cn/direct/38cd76b7b13f44c18f8d288e42e22c40.png)
Q:什么是打包?
A:
- 就是把所有的class⽂件, 全部放在⼀起, 打成jar包或者war包。
- jar包和war包都是⼀种压缩⽂件。
- jar包就是把开发⼈员已经写好的⼀些代码进⾏打包. 打好的jar包就可以引⼊到其他项⽬中, 也可以直 接使⽤这些jar包中的类和属性. 另外也可以打成可执⾏jar包, 这样的包就可以通过java -jar命令来执⾏。
- war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西, 通常⽤于⽹站.
2.依赖管理
Q:什么是pom.xml?A:pom.xml 就是maven 的配置⽂件,⽤以描述项⽬的各种信息
举个栗子~
想象一下,你还在盖房子(不装了,我爸是房地产大亨),需要各种材料,如砖块、水泥、木材等。Maven就像是你的材料供应商,它知道哪里可以找到这些材料(即Maven仓库),并且当你需要某种材料时,它会自动帮你订购并送到你的工地上。你不需要亲自去市场上搜索、购买每种材料,Maven会帮你处理这些繁琐的工作。
好处:这样可以大大节省你的时间和精力,确保你不会遗漏任何必要的材料,同时避免了材料版本或质量不兼容的问题。
![](https://i-blog.csdnimg.cn/direct/835b6af74e55491dad0d0c9cd4dee3b1.png)
如果使⽤Maven,我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了
刷新完之后,就可以在项⽬中看到新加⼊的jar包。
1.依赖传递
如上图,项⽬A通过Maven引⼊JarA时,会⾃动引⼊JarB和JarC.JarA和项⽬B就是项⽬A的直接依赖.
JarB,JarC是间接依赖.
直接依赖:在当前项⽬中通过依赖配置建⽴的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项⽬间接依赖其他资源
早期我们没有使⽤maven时,向项⽬中添加依赖的jar包,需要把所有的jar包都复制到项⽬⼯程下.⽐如A依赖B,B依赖C,那么A项⽬引⼊B的同时,也需要引⼊C,如果我们⼿动管理这个依赖,这个过程
就会⽐较⿇烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的
⽐如我们要吃⽕锅,需要有锅,有调料,有⻝材,以及确认什么样的锅,什么样的⻝材.
⽐如去医院看病,需要带上以往的病历,检查结果,处⽅等,并且要确认带的资料是正确的,如果⽇期错了,或者患者错了,带少了,就需要回去重新拿.
但使⽤maven的话,就可以避免管理所需依赖的关系。我们只需要在pom⽂件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊
⽐如吃⽕锅,现在我们可以点⼀个海底捞外卖,直接就把所有⻝材都送过来了,包括什么锅,配什么菜.⽐如去医院看病,借助"互联⽹",实现了信息共享,只需要带上⾝份证,以往的病历和检查结果就都可以
2.依赖排除
当前阶段我们需要依赖的库并不多,但随着项⽬的越来越复杂,库之间的依赖关系也会变得越来越复杂.如上图中,如果项⽬A不需要JarB,也可以通过排除依赖的⽅式来实现.
排除依赖:指主动断开依赖的资源。(被排除的资源⽆需指定版本)⽐如,我下了⼀个快递单⼦,默认会有⼀个服务,就是快递⼩哥会上⻔取件,但是我刚好要出⻔,⽽且顺路经过站点,也可以选择⾃⼰送过去
还有存在依赖冲突的情况,比如有两个依赖是不同路径内容内容版本相同,则采用路径最近原则。
二.Maven Help插件
1.什么是Maven Help插件
Maven Help插件是Maven项目构建工具中的一个插件,它提供了一系列目标(goals),旨在帮助开发者更好地理解和操作Maven构建环境。
举个栗子~
你正在建造一栋房子,而Maven就是你的建筑团队和工具库。在这个过程中,Maven Help插件就像是一个智能的助手,它能帮助你更好地理解和操作整个建房过程。
Maven Help插件的功能:
- 查看当前激活的“建筑方案”:就像在建房子时,你可能会根据不同的需求选择不同的建筑方案(比如现代风格、古典风格等)。Maven Help插件能告诉你当前激活的是哪个“建筑方案”(即Maven的Profile)。
- 查看所有可用的“建筑方案”:它还能列出你所有可用的“建筑方案”,让你知道有哪些选择。
- 查看“建筑蓝图”的最终版:建房子前,你会有一个建筑蓝图。但在实际建造过程中,可能会有一些修改和调整。Maven Help插件能帮你查看最终的“建筑蓝图”(即有效POM),这个蓝图包含了所有的修改和调整。
- 查看“建筑工具”的实际配置:建房子时,你会使用一些工具,比如锤子、锯子等。这些工具可能有一些配置或设置。Maven Help插件能帮你查看这些“建筑工具”(即Maven设置)的实际配置。
- 了解“建筑动作”的详细信息:在建房过程中,你会执行一些动作,比如打地基、砌墙等。Maven Help插件能帮你了解这些“建筑动作”(即Maven插件或目标)的详细信息,比如需要哪些材料、工具等。
- 查看“建筑环境”的信息:建房子时,你需要了解周围的环境,比如天气、地形等。Maven Help插件能帮你查看“建筑环境”(即系统属性和环境变量)的信息。
- 计算“建筑材料”的数量:在建房过程中,你可能需要计算一些材料的数量,比如需要多少块砖、多少袋水泥等。Maven Help插件能帮你计算这些“建筑材料”(即Maven表达式)的数量。
2.安装Maven插件
三.Maven仓库
我们通过短短⼏⾏代码,就把依赖jar包放在了项⽬⾥,具体是如何做的呢?
这个代码,我们称之为"坐标",也就是唯⼀的.
在Maven中,根据groupId、artifactId、version的配置,来唯⼀识别⼀个jar包,缺⼀不可.
当我们在pom⽂件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库⾥寻找Jar包,并把他下载下来,添加到项⽬中.这个Jar包下载的地⽅就称为仓库.
仓库:⽤于存储资源,管理各种jar包
Maven仓库的本质就是⼀个⽬录(⽂件夹),这个⽬录被⽤来存储开发中所有依赖(jar包,插件等).
1.本地仓库
本地仓库:⾃⼰计算机上的⼀个⽬录(⽤来存储jar包)
当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包
- 如果有,则在项⽬直接引⽤。
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
可以通过以下方式查看本地仓库地址
2.中央仓库
中央仓库:maven软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹.由Maven团队维护,全球唯⼀.
仓库地址:Central Repository:
可以通过https://mvnrepository.com/这个⽹站来查询并下载
我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求),也可以从中央仓库下载Jar包
3.私服(私有服务求)
私服:⼀般由公司团队搭建的私有仓库.
私服属于某个公司,或者某个部⻔,往往需要⼀定权限.有了私服之后,Maven依赖下载的顺序⼜发⽣了变化。
当Maven需要下载资源的时候
- 先从本地仓库获取,本地仓库存在,则直接返回
- 如果本地仓库没有,就从私服请求,私服存在该资源,就直接返回
- 如果私服上不存在该资源,则从中央仓库下载,中央仓库不存在,就报错了...
- 如果中央仓库中存在,就先缓存在私服上之后,再缓存到本地仓库⾥,再为Maven的下载请求提供服务
- 私服是很多⼈在使⽤的,所以只需要第⼀个使⽤者下载⼀次就可以了
四.Maven设置国内源(重要)
因为中央仓库在国外,所以下载起来会⽐较慢,所以咱们选择借助国内⼀些公开的远程仓库来下载资源接下来介绍,如何设置国内源。
1.配置当前项⽬setting
不同电脑设置的Maven路径不同
settings和repository可以修改设置为其他路径,两个路径不要有中⽂。
一般创建Maven项目时这里是默认的路径,根据这个路径找到.m2文件,再把这个文件复制到你移动的地方(建议空间充裕些),这个操作相当于仓库搬家。
2.配置国内源
Maven仓库默认在国外https://mvnrepository.com/,国内使⽤时会⽐较慢,我们可以更换为阿⾥云的仓库
也可以选择别的仓库,参考:https://zhuanlan.zhihu.com/p/627320558 (Maven镜像地址大全)
打开settings.xml,在mirrors节点上,添加内容如下:
![](https://i-blog.csdnimg.cn/direct/dfa15b02f088446795c8300c14bfa580.png)
3.设置新的项目setting
上述配置的内容,只对当前项⽬⽣效,为了让后续新建的项⽬也⽣效,需要重新设置⼀下新项⽬的Settings。
当前项⽬和新项⽬共⽤⼀个setttings⽂件即可,所以新项⽬的设置,只需要确认⼀下settings⽂件的路径即可.