目录
1.:进入maven官网-->找到下载页面-->点击二进制zip文档的链接
一:Maven概述
Maven是专门用于管理和构建java项目的工具,他的主要功能有:
- 提供了一套标准化的项目结构 ;
- 提供了一套标准化的构建流程(编译,测试,打包,发布……);
- 提供了一套依赖管理机制;
标准化的项目结构
项目结构就是我们创建的文件夹整个层级,每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。我再eclipse中创建的目录,无法在idea中进行使用,这就造成了很大的不方便,而Maven为我们提供了一套标准的项目结构,方便我们在不同的IDE中导入我们的整个项目;如图所示:
标准化的构建流程
通过Maven我们可以方便的对项目进行一个构建的流程,包括:编译,测试,打包,发布等等的功能。
只需要简单的Maven命令:
依赖管理
"依赖",顾名思义就是我们完成某项任务或者功能可能需要其他东西的辅助;就比如说:我们学习JDBC时可能需要MySQL的驱动jar包。需要到网上下载,导入到我们的项目中,整体下来是很繁琐的。使用Maven后可以很方便的完成上述繁琐的操作
学习JDBC时导入的MySQL的驱动包和阿里的德鲁伊数据库连接池:
使用Maven后,用标准的坐标【我们日常生活中说到"去西安,北京(坐标),这就是一个坐标,标识一个我们要去的地方,Maven也同样如此,通过坐标识唯一的资源"】 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。下图是导入的资源,这里只需要了解一下,后面会详细讲解。
<!-- 导入mysql的驱动包-->
<dependencies>
<!-- 导入mysql的驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version> 5.1.32</version>
</dependency>
<!-- 测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
二.Maven介绍
"Apache Maven 是一个软件项目管理和理解工具。基于项目对象模型的概(POM),Maven 可以从中心信息管理项目的构建、报告和文档."这是官网中的一段话。
大家有什么问题可以去官网查询,官网更为准确。
官网 :Apache Maven官网网址
1.Maven模型
Maven POM只需要了解一下即可,如果感兴趣可以访问官网查看详细内容,或者访问 菜鸟教程Maven POM.
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
简单理解:项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标,如下图所示是一个 Maven项目:
依赖管理模型则是使用坐标来描述当前项目依赖的第三方jar包在哪里【坐标】。
2.仓库
想想 我们创建Maven项目,在项目中使用坐标来指定项目的依赖,然后我们的jar包就会凭空出现,可能吗?显然是不可能的,可能的情况就是我们的jar包存储在我们的仓库中,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。
仓库分类:
【一会会安装并介绍】
本地仓库 | 自己计算机上的一个目录 |
中央仓库 | 由Maven团队维护的全球唯一的仓库 地址:网址 |
远程仓库(私服) | 一般由公司团队搭建的私有仓库 今天我们只学习远程仓库的使用,并不会搭建。 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包: 如果有,则在项目直接引用; 如果没有,则去中央仓库中下载对应的jar包到本地仓库 |
注:图片来源
三. Maven安装和配置
安装Maven
1.:进入maven官网-->找到下载页面-->点击二进制zip文档的链接
Binary是可执行版本,已经编译好可以直接使用。因此我们直接下载这个文件即可
Source是源代码版本,需要自己编译成可执行软件才可使用。
2.:解压当前文件夹
bin目录 : 存放的是可执行命令。mvn 命令重点关注。
conf目录 :存放Maven的配置件。 settings.xml 配置文件后期需要修改。
lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。
3.:配置环境变量
1.右键此电脑–>属性–>高级系统设置–>环境变量
2.如图:点击环境变量--依次按步骤操作即可
4.:检查
配置完成后,打开cmd【快捷键:win+R】输入命令,看是否配置成功
命令:mvn-version
5.:配置本地仓库
找到我们刚才Maven的解压目录
修改 conf/settings.xml 中的 为一个指定目录作为本地仓库,用来存储jar包。
打开进行修改【】:
路径为:自己刚才创建的文件夹路径
配置信息:
<localRepository>D:\Maven\maven_development\apache-maven-3.6.1\mvn_resp</localRepository>
6..配置阿里云私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。 修改 conf/settings.xml 中的 标签,为其添加如下子标签:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
如图所示:
至此,maven的基本配置完成。
四.Maven的基本使用
1.命令演示
compile :编译
clean:清理
test:测试
package:打包
install:安装
命令演示:
因为还没有在idea中配置maven,这里只需浏览一下即可,等会讲解配置问题
mvn compile 编译
1.提供了一个使用Maven构建的项目
2.我们使用上面命令需要在磁盘上进入到项目的 pom.xml 目录下,打开命令提示符
3.执行上述命令
第一次输入命令时,可能会等待下载插件,如图;
其他命令不在一一展示,读者可以自行在命令行中尝试........
2.Maven生命周期【了解】
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven 对项目构建的生命周期划分为3套:
clean :清理工作。
default :核心工作,例如编译,测试,打包,安装等。
site : 产生报告,发布站点等。这套声明周期一般不会使用。
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下: 当我们执行 install (安装)命令时,它会先执行 compile 命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。
当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。 默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:
了解更多:请参照菜鸟教程
五.IDEA中配置Maven
我的IDEA版本2022.3.3;不同的版本可能略有差异
1.首先找到新建项目的页面,点击 All settings....
2.Build----->Maven----->修改相关信息
如果我们第一次配置肯能会发现;其实IDEA中内置了Maven;而Maven的仓库就在我们的
C盘:
不使用默认的,使用我们下载的MAven和仓库信息:
3.点击OK“,返回开始的界面再点击”New Project“
4.出现Maven的项目配置结构
- 右键”text“ --->new---->Directory-->输入文件名即可;
六.IDEA中的相关操作
1.导入Maven项目
若我们想再自己的Maven项目中导入别人的项目:
- 选择右侧Maven面板,点击 +
- 选中对应项目的pom.xml文件,双击即可【别人的项目就会被导入】
- 如果没有Maven面板,选择 View --> Appearance --> Tool Window Bars
2.Maven命令操作
刚才我们再Powershell中使用命令演示了编译,测试,安装等命令;再IDEA中我们可以通过图形化界面进行操作;如图所示:
配置Maven插件
Maven Helper:当我们项目很多时可以给我们带来方便
- 选择 IDEA中 File --> Setting
- 选择第一个 Maven Helper,点击Install安装,弹出面板中点击Accept
- 重启IDEA后就可以使用
3.使用坐标引入jar包
使用坐标引入jar包的步骤:
1.在项目的 pom.xml 中编写标签
<dependencies> </dependencies>2.在 标签中使用 引入坐标
3.定义坐标的 groupId,artifactId,version
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
- 重要:记得刷新【这样才能起作用】
具体的坐标我们可以到如下网站进行搜索
其他的坐标大家可以自行尝试导入!
4.依赖范围【先了解,以后用到了可以再学】
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。 如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用:
- scop可以的取值
- compile :作用于编译环境、测试环境、运行环境。
- test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值 provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
- runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题
如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
因时间仓促,内容可能不完整或者有出错的地方,希望大家指正!如果对你有帮助,希望能获得一个免费的👍哦!
最后祝大家小年快乐!身体健康!
参考:
黑马程序员JavaWeb教程https://www.bilibili.com/video/BV1Qf4y1T7Hx/?spm_id_from=333.337.search-card.all.clickh草原印象-优快云博客草原印象擅长Hibernate,Maven,MyBatis,等方面的知识https://blog.youkuaiyun.com/gongjian0321草原印象擅长Hibernate,Maven,MyBatis,等方面的知识
https://blog.youkuaiyun.com/gongjian0321