Maven学习和使用

发布于 2022-07-08  117 次阅读


Maven使用学习

一、工具介绍

什么是Maven?

Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。

作用

  • 管理jar包
  • 增加第三方jar包(不需要自己下载jar包)
  • 管理jar包之间的依赖关系(maven自动关联下载所有依赖的jar包)
  • 将项目拆分成若干个模块:借助于Maven可以将一个项目拆分成多个工程。

Maven仓库说明

  • 本地仓库 : 相当于缓存。本地仓库存储在本地的磁盘当中,里面存放的是经常使用的jar包。
  • 远程仓库 : 也叫做私服。基本每个公司都会有自己的私服,当本地的磁盘中不存在需要的jar包资源,则会请求私服进行资源下载。
  • 中央仓库 : 远程仓库,由jar专业团队统一维护。

二、下载安装

官网入口

image-20220708093800686

安装完成之后,打开目录

image-20220708093902193

bin文件夹中存放的是可执行文件

boot文件夹存放的是maven需要使用的一些程序

conf文件夹存放的是maven的配置文件

lib文件夹存放的是Jar包

配置环境变量

image-20220708101419041

配置Path

image-20220708101619253

测试安装成功

image-20220708101907681

三、Maven仓库配置

打开conf文件夹下的setting.xml文件

配置本地仓库

image-20220708102502814

配置远程仓库镜像

image-20220708102613718

四、IDEA中的Maven工具

idea中配置maven

image-20220708102850774

依赖引入

依赖的引入从项目中的pom.xml文件中进行配置

image-20220708103409640

在Idea中可以快捷引入依赖

定位在<dependency>标签内部,右键打开Generate

image-20220708103604537

,选择Add dependency

image-20220708103705132
image-20220708103847232

maven插件添加

image-20220708104313134

设置打包方式

image-20220708110310618

五、Maven常用命令

Maven生命周期

一个maven项目的生命周期

使用maven完成项目的构建,仙姑构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命周期,如下所示是生命周期各个阶段:

image-20220708105044409

命令介绍

命令说明
mvn compile完成编译操作,执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件
mvn clean执行完毕后,会将target目录删除
mvn test执行完毕后,会在target目录中生成三个文件夹:
surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)
mvn package完成打包操作、执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war
mvn install执行mvn install命令,完成将打包好的jar包安装到本地仓库的操作,
执行完毕后会在本地仓库出现安装后的jar包,方便其他工程引用

IDEA中的maven管理工具

image-20220708110452503

上方的按钮作用

image-20220708110739079
按钮作用
image-20220708110849352在配置完pom.xml(引入依赖、配置插件等。。。)后,点击这个按钮进行更新
image-20220708111101915重新编译
image-20220708111140727下载
image-20220708111204576添加项目工程(选择添加工程的pom.xml)
image-20220708111749443运行maven命令
image-20220708112100366选择,跳过测试
image-20220708111800989查看依赖关系

依赖范围

在pom.xml配置文件,依赖包的信息中,通过<scope></scope>标签进行依赖范围的设定。

依赖范围说明
compile编译范围,指A在编译时依赖B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
providedprovided依赖只有在当JDK或者一个容器已提供该依赖之后才使用,provided依赖在编译和测试时需要,在运行时不需要,比如: servlet api被tomcat容器提供。
runtimeruntime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如: jdbc的驱动包。由于运行时需要所以runtime范围的依赖会被打包。
testtest范围依赖在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如 : junit。由于运行时不需要所以test范围依赖不会被打包。
systemsystem范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定systemPath 磁盘路径,system依赖不推荐使用。

本当の声を響かせてよ