Maven 是一款项目构建与依赖管理工具, 主要作用如下:
- 依赖管理:自动管理项目用到的 jar 包。只需要在配置文件
pom.xml里写依赖坐标,Maven 会自动从仓库下载对应的 jar 包,不用手动复制、导入 jar 包,也能解决 jar 包之间版本冲突问题。 - 项目构建:提供一套标准化项目结构,统一编译、测试、打包、安装、部署流程。一条命令就能完成项目编译、运行、打包,不用手动配置编译环境。
- 标准化项目结构:所有 Maven 项目目录结构统一,方便团队协作,大家拿到项目就能快速看懂代码位置。
- 仓库管理:分为本地仓库、中央仓库、私服,用来存放 jar 包。下载过的包保存在本地,多个项目可以复用。
使用Maven配置jar包: 打开iDEA,找到最左侧的Maven文件,下面有一个pom.xml的文件,双击打开
可以直接在里面配置所需要的jar包,系统会帮我们下载好,并且加入到当前项目中来,这里我选择的是2.11.0版本:
配置完成后,最右侧会多出来一个依赖项:
这就表示已经配置好了
前面提到过Maven可以对项目进行构建,构建的操作包括了:编译、测试、打包、发布,我们可以在iDEA的右侧的生命周期中双击进行对应的操作,非常方便:
Maven坐标:
- Maven 中的坐标是资源 (jar) 的唯一标识,通过该坐标可以唯一定位资源位置。
- 使用坐标来定义项目或引入项目中需要的依赖。
Maven坐标的主要组成:
- groupId:定义当前 Maven 项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactId:定义当前 Maven 项目名称(通常是模块名称,例如 order-service、goods-service)
- version:定义当前项目版本号
<groupId>com.itheima</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>
//版本后有SNAPSHOT表示该功能不稳定、尚处于开发中的版本,即快照版本
//RELEASE:功能趋于稳定、当前更新停止,可以用于发行的版本
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.27</version>
</dependency>
在iDEA里导入Maven项目可以按照如下步骤进行操作,有两种方式:
依赖配置和排除依赖:
依赖配置:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
排除配置:指主动断开依赖的资源,被排除的资源无需指定版本
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.4</version>
<exclusions>
<exclusion>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-observation</artifactId>
</exclusion>
</exclusions>
</dependency>
代码作用是引入spring-context:6.1.4,但是不要自动拉取它自带的 micrometer-observation 这个依赖包
Maven依赖范围:
依赖的 jar 包,默认情况下,可以在任何地方使用。可以通过 <scope>...</scope> 设置其作用范围。
作用范围:
- 主程序范围有效。(main 文件夹范围内)
- 测试程序范围有效。(test 文件夹范围内)
- 是否参与打包运行。(package 指令范围内)
范围表:
| scope 值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
|---|---|---|---|---|
| compile(默认) | Y | Y | Y | log4j |
| test | - | Y | - | junit |
| provided | Y | Y | - | servlet-api |
| runtime | - | Y | Y | jdbc 驱动 |
Maven常见问题及解决办法:
如果出现了下图所示当中的红色报错,则可能是由于网络原因,依赖没有下载完整导致的,在 maven 仓库中生成了xxx.lastUpdated文件,该文件不删除,不会再重新下载:
解决办法:
打开cmd,通过命令del /s *.lastUpdated批量递归删除指定目录下的xxx.lastUpdated文件,删除之后重新加载项目即可。