一.maven是什么?
maven是一款自动化构建工具,专注服务与java平台的项目构建和依赖管理
二.为什么使用Maven?
2.1.maven可以添加第三方jar包,最原始的做法就手动复制jar包到项目Web INF Leap下,每个项目都会有一份,造成大量重复文件,meven将jar包放在本地仓库中统一管理,需要jar包只需要用坐标的方式引用即可
2.2.jar包之间是相互独立的,很多jar包需要在其他jar包的支持下才能正常工作,称为jar包之间的依赖关系,如果手动导入是十分麻烦且容易出错的,使用maven会将当前jar依赖的所有jar包全部导入
三.使用Maven
3.1.安装并且配置maven环境
下载地址:Maven – Welcome to Apache Maven
因为maven底层使用java语言编写,所以需要配置JAVA_HOME环境变量及Path
将maven解压到非中文无空格目录下
3.2.配置环境变量(前提是已经安装并配置了JDK)
此电脑→属性→高级系统设置→环境变量
再去path中添加配置bin目录
3.3.用cmd命令行输入mvn -v看看有没有配置成功:
3.4.修改阿里云镜像
找到下载maven文件目录,找到settings.xml(conf中)文件,用记事本打开
<mirror>
<id>alimaven<id>
<mirrorof>*</mirrorof>
<url>https://maven.apache.org/index.html</url>
</mirror>
3.5.新建jar包目录
maven配置文件位置:maven根目录/conf/settings.xml
设置本地仓库【默认:C:/用户家目录/.m2/repository】
自定义创建目录,把它当作我后面下载jar包的目标路径
3.6.修改刚刚打开的settings.xml将设置的repository地址粘贴进去
3.7.将maven整合到IDEA中
3.8.在IDEA中新建maven工程
新建java或maven都可以
组id一般是com.公司名.项目名
工件id与名称一致
四.maven的核心概念
4.1Maven的POM
POM全称:Project Object Model【项目对象模型】,将项目封装为对象模型,便于使用Maven管理【构建】项目
4.2Maven约定的目录结构
4.3Maven的生命周期
生命周期:maven构建项目的过程:清理,编译,测试,报告,打包,安装,部署
命令:
mvn clean :清理
mvn compile :编译src/main/java目录中的程序,把java编译成class文件,并放到target/classes目录中,同时会把src/main/resources/目录中的文件拷贝到target/classes目录中
mvn test-compile :编译src/main/test目录中的java程序,拷贝到target/test-classes目录中
mvn test :可以进行单元测试,使用junit测试src/main/java目录中的程序是否符合要求
mvn package :把程序中src/main/下面的java编译后的class以及resources中的配置文件放入到一个压缩文件中
mvn install :把jar,war安装到本机的仓库中
mvn deploy::部署
五.Maven的仓库【重要】
本地仓库:本地仓库是存储在本地磁盘上的仓库,它是默认的仓库类型。当Maven在执行构建时,会在本地仓库中查找所需的依赖项和插件。如果本地仓库中不存在所需的依赖项或插件,Maven会从远程仓库下载并将其存储在本地仓库中。本地仓库的位置可以在Maven的配置文件(settings.xml)中进行配置。
远程仓库:远程仓库是存储在网络上的仓库,可以由中央仓库、私服仓库和其他公共远程仓库等组成。当Maven在本地仓库中找不到所需的依赖项或插件时,它会从远程仓库中下载。远程仓库的位置需要在Maven的配置文件中进行配置。
私服:这是一个在公司内部使用的仓库,其作用是保存具有版权的资源,包括购买或自助研发的jar包。私服仅对内部开放,不对外部开放。私服可以作为公司内部构件的共享存储库,也可以作为公用类库的镜像缓存,减少对外部的访问和下载的频率,提高构建效率,并保证公司内部项目的构件一致性。
中央仓库:这是由Maven团队维护的仓库,它存储了大量的jar包,服务于整个互联网。中央仓库中的jar包都是开放的,不能存储具有版权的资源。
中央仓库的镜像:架设在各个大洲,为中央仓库分担流量,减轻中央仓库的压力,同时更快相应用户请求
六.Maven的坐标【重要】
作用:使用坐标引入jar包
坐标由g-a-v组成
[1]groupld:公司或组织的域名倒序+当前项目名称
[2]artifactld:当前项目的模块名称
[3]version:当前模块的版本
注意
g-a-v:本地仓库jar包位置
a-v:jar包全名
坐标应用
坐标参考网址:https://mvnrepository.com/
语法: