1、概念
maven是一个项目管理构建工具,它基于项目对象模型(POM)的概念, 通过一小段描述信息来管理项目的构建,报告和文档,(官网:https://maven.apache.org/) 它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译,测试,打包,发布...)
- 提供了一套依赖管理机制
2、maven的仓库
仓库分类:
- 本地仓库:自己计算机上的一个目录
- 中央仓库:同Maven团队维护的全球唯一的仓库(地址:https://repo1.maven.org/maven2/)
- 远程仓库(私服):一般由公司团队搭建的私有仓库
仓库的查找顺序是: 本地仓库 -> 远程仓库 -> 中央仓库
3、maven的安装配置
a、下载maven
官方下载链接:https://maven.apache.org/download.cgi
界面如下
注意:Binary是可执行版本,已经编译好可以直接使用,Source是源代码版本,需要自己编译成可执行软件才可使用。(如果需要下载历史版本,在Previous Releases中的archives中下载)
b、安装
把zip包解压到指定的自定义目录下
配置环境变量
编辑环境变量
验证安装成功
c、配置
配置本地仓库, 修改conf/settings.xml中的<localRespository>为其指定一个目录(默认在c盘下的.m2目录下)
配置远程仓库即镜像, 修改conf/settings.xml中的<mirrors>标签,为其添加如下标签
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
d、配置ide(在idea的settings中也需要进行配置)
4、maven的基本使用
maven的常用命令
mvn compile // 编译, 会生成编译完成的target目录 mvn clean // 清理,会删除已编译的target目录 mvn test // 测试, 执行测试代码 mvn package //打包, 会进行打包操作,并且生成相应的target目录,以及jar包 mvn install //安装
创建maven项目
导入当前已有的maven项目
注意:如果没有右侧栏界面,那么就需要调用出对应的界面,如下图
为了更好的使用maven,可以安装maven helpers
5、依赖管理
查询jar包的依赖管理库 https://mvnrepository.com/
配置示例如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--当前项目的坐标-->
<groupId>site.ieven</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!--需要导入的jar包的坐标,示例以下是导入mysql的jar包-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
</project>
注意:在导入坐标后,如果需要其生效,那么需要点击 重载刷新的按钮,也可以通过配置如下的配置,自动安装机制
配置了如上的配置,那么当pom保存时就会自动加载
快速导包的快捷键: Alt + insert 再点击 dependency可进行查询本地所有包,并且快速导入模板
6、依赖的作用范围
compile
不声明scope元素的情况下的默认值;compile表示被依赖包需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖;打包的时候通常需要包含进去。
provided
provided
类型的scope只会在项目的编译
、测试
阶段起作用;可以认为在目标容器中已经提供了这个依赖,无需在提供,但是在编写代码或者编译时可能会用到这个依赖;依赖不会被打入到项目jar包中
runtime
runtime
与compile
比较相似,区别在于runtime
跳过了编译
阶段,打包的时候通常需要包含进去。
test
在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,不会被打包到项目jar包中
,同时如果项目A依赖于项目B,项目B中的test
作用域下的依赖不会被继承。
system
表示使用本地系统路径下的jar包,需要和一个systemPath一起使用
默认: compile