1. Maven的作用2. Maven的安装3. 在idea中配置maven环境4. 创建maven项目5. maven坐标6. 用IDEA导入maven方案7. maven的依赖配置8. maven的依赖传递9. maven的依赖范围10. maven的生命周期
文章目录
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。
1.Maven的作用
依赖管理-方便快捷管理项目依赖的资源(jar包),避免版本冲突的问题
统一项目结构-提供标准,统一的项目结构
![![[Pasted image 20241012111046.png]]](https://i-blog.csdnimg.cn/direct/1d3706b4673d4dad9bdfda151124fb2f.png)
项目构建-标准跨平台(Linux,Windows,MacOS)的自动化项目构建方式
2.Maven的安装
2.1解压apache-maven-3.6.1-bin.zip
2.2配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录。
![![[Pasted image 20241011104413.png]]](https://i-blog.csdnimg.cn/direct/662272189c8e49209e05802a1bc29b2b.png)
![![[Pasted image 20241011104705.png]]](https://i-blog.csdnimg.cn/direct/a841f0d833a448f79d8cea6b74799f35.png)
2.3配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签:
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
![![[Pasted image 20241011105128.png]]](https://i-blog.csdnimg.cn/direct/297a2de1da5748f4b1897f73174c6208.png)
2.4配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录加入PATH环境变量
![![[Pasted image 20241011105636.png]]](https://i-blog.csdnimg.cn/direct/f503d05700b64d139a3dab1d25bda377.png)
![[Pasted image 20241011110151.png]]
2.5测试maven是否安装成功
win+r打开命令提示符
输入指令
mvn -v
出现如下界面表示安装成功![![[Pasted image 20241011110337.png]]](https://i-blog.csdnimg.cn/direct/cd9db645ea4347ff8aca0ebd18812a44.png)
注意:maven主要使用Jdk11的版本
3.配置maven环境
3.1在idea中配置maven环境
![![[Pasted image 20241011113110.png]]](https://i-blog.csdnimg.cn/direct/08f272569adb4efc86c53aae2a9f8452.png)
![![[Pasted image 20241011113714.png]]](https://i-blog.csdnimg.cn/direct/e35ab892bde3420db4933a4970e5dcaf.png)

![![[Pasted image 20241011114226.png]]](https://i-blog.csdnimg.cn/direct/9d6bdd0117fb47ab928b29a9a23a550f.png)
3.2配置maven环境(全局)
![![[Pasted image 20241011114723.png]]](https://i-blog.csdnimg.cn/direct/6ecbe915b26545d9907d499d8a9e1883.png)
4.用Idea创建maven项目
在idea中创建一个空项目,在空项目里创建一个新模块
![![[Pasted image 20241012111421.png]]](https://i-blog.csdnimg.cn/direct/b648c531802c452f90c1fdb24da55a4d.png)
![![[Pasted image 20241012113454.png]]](https://i-blog.csdnimg.cn/direct/17c9d49a4baf495cba5b831aa78400d3.png)
5.maven坐标
maven坐标是自愿中唯一的标识,可以通过该坐标唯一定位资源位置
使用坐标来定义项目或引入项目中的依赖
5.2maven坐标的组成
- groupid:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactld:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
- version:定义当前项目版本号
6.用IDEA导入maven项目
6.1导入maven项目方式一:
![![[Pasted image 20241012114844.png]]](https://i-blog.csdnimg.cn/direct/5d458bb660314f0dbbafe6d2f39dc077.png)
6.2导入maven项目方式二:
![![[Pasted image 20241013211654.png]]](https://i-blog.csdnimg.cn/direct/466b66afbf56457d9a5f3b522541529f.png)
6.3删除maven项目
![![[Pasted image 20241012115045.png]]](https://i-blog.csdnimg.cn/direct/6ec48629828945f886e3065abb3043d9.png)
7.maven的依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
配置:
- 在pom.xml中编写
<dependencies>标签 - 在
<dependencies>标签中使用<dependency>引入坐标 - .定义坐标的groupld,artifactld,version
- 点击刷新按钮,引入最新加入的坐标
maven的仓库:Maven Repository: ch.qos.logback » logback-classic » 1.5.6 (mvnrepository.com)
7.1在maven仓库中导入依赖
![![[Pasted image 20241014084710.png]]](https://i-blog.csdnimg.cn/direct/3abfa17f4a78454e887ceee0d7fba810.png)
7.2检查依赖是添加成功
![![[Pasted image 20241014091528.png]]](https://i-blog.csdnimg.cn/direct/d87458361098471cb397c10f582c6e7b.png)
8.maven的依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
8.1排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
通过<exclusions>标签排除依赖-该标签可以一次性排除多个依赖![![[Pasted image 20241014100851.png]]](https://i-blog.csdnimg.cn/direct/6895296efd8f45288d4c8b33287560f9.png)
排除junit依赖后,junit依赖从依赖项消失![![[recording.gif]]](https://i-blog.csdnimg.cn/direct/f6890b1b6ccc4f89a5c9deba164efd5c.gif)
9.maven的依赖范围
依赖的jar包,默认情况下可以在任何地方使用,可以通过<scope>...</scope>设置其作用范围
作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包运行(package指令范围内)
9.1scope值
- compile:在主程序,测试程序,打包(运行内)均有效
- test:只在运行程序有效
- provided:只在主程序和测试程序有效
- runtime:只在测试程序和打包(运行有效)
9.2查看依赖是否在作用范围有效
以compile默认值,logback依赖为例
9.2.1在主程序内
![![[Pasted image 20241014102506.png]]](https://i-blog.csdnimg.cn/direct/4d0ea373373a4219b03afefc4c3f69bc.png)
9.2.2在测试程序内
![![[Pasted image 20241014102653.png]]](https://i-blog.csdnimg.cn/direct/19e85478b7d24f71860bb1671f413f74.png)
9.2.3在打包(运行内)
![![[Pasted image 20241014104810.png]]](https://i-blog.csdnimg.cn/direct/5ccb4ebcdd8d4a739aed25e73f1422d9.png)
![![[Pasted image 20241014105418.png]]](https://i-blog.csdnimg.cn/direct/d2ef7a058bff42fcba2c9d66f679f6e5.png)
10.maven的生命周期
1.maven的生命周期就是为了对所有的maven项目构建进行抽象和统一
2.每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段
3.在同一套生命周期中,后面的阶段运行前面的阶段都会运行
maven中有三套相互独立的生命周期
- clean:清理工作
- default:核心工作,如:编译,测试,打包,安装,部署等
- site:生成报告,发布站点等
10.1生命周期的阶段
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架进行测试
- package:将编译后的文件打包
- install:安装项目到本地仓库
![![[Pasted image 20241014110711.png]]](https://i-blog.csdnimg.cn/direct/cf0837657c9c4dc39ac1ab9660edc80c.png)
10.2执行生命周期的两种方式
方式一:RUN Maven Build或者双击生命周期
![![[Pasted image 20241014110818.png]]](https://i-blog.csdnimg.cn/direct/2f8beb552f244f8c8c158102984c6f2f.png)
方式二:通过命令行,mvn+生命周期 !
![[[Pasted image 20241014111818.png]]](https://i-blog.csdnimg.cn/direct/6dbf2c1b4ca34ad8a4636dccbdd7994f.png)
例:
mvn clean
浙公网安备 33010602011771号