Maven 在 IDEA 中的正确打开方式:新手必看的操作手册_maven idea
文章目录
-
- 📕1. 什么是Maven
- 📕2. 创建一个Maven项目
- 📕3. Maven核心功能
-
-
- ✏️3.1 项目构建
- ✏️3.2 依赖管理
- ✏️3.3 依赖传递和依赖排除
- ✏️3.4 Maven Help插件
-
- 📕4. Maven仓库
-
-
- ✏️4.1 本地仓库
- ✏️4.2 中央仓库
- ✏️4.3 私有服务器
-
- 📕5. Maven设置国内源
-
-
- ✏️5.1 配置当前项⽬setting
- ✏️5.2 设置新项⽬的setting
-
📕1. 什么是Maven
🌈官⽅对于Maven的描述:
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
引用来自
🌈翻译过来就是:
Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。
⼤⽩话: Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包。使用Maven简单, ⽅便, 提⾼我们的开发效率, 减少我们的开发Bug.
📕2. 创建一个Maven项目
IDEA本⾝已经集成了Maven, 我们可以直接使⽤, ⽆需安装。(个人认为目前IDEA集成的Maven已经完全可以满足我们日常学习使用,无需重新安装Maven重新配置)
📕3. Maven核心功能
✏️3.1 项目构建
Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的⾃动化项⽬构建⽅式(当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别⿇烦, ⽽Maven 给我们提供了⼀套简单的命令来完成项⽬的构建.)
🌈🌈🌈 大白话:现在你只需要动手点一点,Maven就会自动帮你完成编译,测试,打包,发布等流程。
✏️3.2 依赖管理
上⾯说到,Maven是⼀个项⽬管理⼯具,通过pom.xml⽂件(pom.xml 就是maven 的配置⽂件,⽤以描述项⽬的各种信息)的配置获取jar包,⽽不⽤⼿动去添加jar包(获取的jar包,其实就是依赖)
🌈 比如: 前⾯学习JDBC时, 我们需要⼿动下载mysql-connector-java的包.并且添加到项⽬中。如果使用Maven, 我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了
<dependencies></dependencies>
- 在pom⽂件 标签内, 添加依赖坐标
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency>
- 点击刷新按钮, 引⼊新加⼊的依赖jar包
- 刷新完之后, 就可以在项⽬中看到新加⼊的jar包
✏️3.3 依赖传递和依赖排除
依赖传递
当一个项目需要很多个依赖时,会出现A 依赖B, B依赖C这种情况,那么 A项⽬引⼊B 的同时, 也需要引⼊C, 如果我们⼿动管理这个依赖, 这个过程就会⽐较⿇烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的。但使⽤maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom⽂件中, 定义直接依赖就可以
了, 由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊。
如上图, 项⽬A 通过Maven 引⼊ Jar A 时, 会⾃动引⼊ Jar B 和Jar C. Jar A 和项⽬B就是项⽬A的直接依赖.Jar B, Jar C是间接依赖
- 直接依赖:在当前项⽬中通过依赖配置建⽴的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项⽬间接依赖其他资源
🌰🌰🌰 举个例子:
没有海底捞外卖之前,我们要吃⽕锅, 需要有锅, 有调料, 有⻝材, 以及确认什么样的锅, 什么样的⻝材(所有东西我们都需要自己买,落下一个火锅就吃不成了)
有海底捞外卖之后,我们只需要动动手点一个外卖,直接就把所有⻝材都送过来了, 包括什么锅, 配什么菜。
海底捞外卖就是Maven
依赖排除
排除依赖 : 指主动断开依赖的资源。(被排除的资源⽆需指定版本)
🌈 ⽐如:我下了⼀个快递单⼦, 默认会有⼀个服务, 就是快递⼩哥会上⻔取件, 但是我刚好要出⻔, ⽽且顺路经过站点, 也可以选择⾃⼰送过去
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version><exclusions><exclusion><artifactId>spring-jcl</artifactId><groupId>org.springframework</groupId></exclusion></exclusions></dependency>
✏️3.4 Maven Help插件
当项⽬⽐较复杂时, 我们就会有Jar包冲突的问题, 这时候就需要去解决依赖冲突. 解决冲突之前, 需要先找到冲突, 我们可以使⽤Maven Help插件来观察包和包之间的依赖关系
安装之后, 打开pom⽂件, 可以看到Jar包之间的依赖关系
可以右键排除掉⼀些依赖
📕4. Maven仓库
我们通过短短⼏⾏代码, 就把依赖jar包放在了项⽬⾥, 具体是如何做的呢?
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency>
这个代码, 我们称之为 “坐标”, 也就是唯⼀的.
在Maven中, 根据 groupId、artifactId、version 的配置, 来唯⼀识别⼀个 jar 包, 缺⼀不可.
当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包, 并把他下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库(Maven仓库的本质就是⼀个⽬录(⽂件夹),这个⽬录被⽤来存储开发中所有依赖(jar包, 插件等).).
仓库:⽤于存储资源,管理各种jar包
✏️4.1 本地仓库
本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包)
当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包
- 如果有:则在项⽬直接引用
- 如果没有:则去中央仓库中下载对应的jar包到本地仓库
本地仓库地址可以通过Maven配置查看(File -> Settings)
✏️4.2 中央仓库
中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队维护,全球唯⼀
仓库地址
依赖查询下载地址
🌈 如何查找依赖坐标?
-
访问 https://mvnrepository.com/
-
进⾏查找, ⽐如mysql
-
选择要添加的Jar包版本
- 查看Jar包对应坐标
✏️4.3 私有服务器
私服: ⼀般由公司团队搭建的私有仓库
私服属于某个公司,或者某个部⻔, 往往需要⼀定权限
当Maven需要下载资源的时候:
- 先从本地仓库获取, 本地仓库存在, 则直接返回
- 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
- 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了…
- 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服
务
📕5. Maven设置国内源
因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源
接下来介绍, 如何设置国内源
✏️5.1 配置当前项⽬setting
File -> Settings
- 查看配置⽂件的地址, 如上图所⽰, Maven配置⽂件地址为: D:\\Maven.m2\\settings.xml
- 配置国内源
打开settings.xml, 在 mirrors 节点上,添加内容如下:
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿⾥云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>
如果上述地址不存在settings⽂件,可以私信我要一份setting文件
✏️5.2 设置新项⽬的setting
上述配置的内容, 只对当前项⽬⽣效, 为了让后续新建的项⽬也⽣效, 需要重新设置⼀下新项⽬的Settings