Maven 的基础
官网地址
官网:http://maven.apache.org/
Maven 定义
定义:Maven 是一个项目管理和构建的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
Maven 的功能
- 提供标准化的项目结构
- 提供标准化的构建流程(编译,测试,打包,发布......)
- 提供依赖管理机制
提供标准化的项目结构:
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141538565-1151550085.png)
Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用
提供标准化的构建流程(编译,测试,打包,发布......):
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141552786-1401362584.png)
开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
提供依赖管理机制:
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141605573-810612304.png)
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包,复制到项目中,还要将jar包加入工作环境这一系列的操作
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141623892-658373977.png)
Maven使用标准的 [坐标] 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
Maven 的安装
资料提供,百度网盘地址:
链接:https://pan.baidu.com/s/19u6cmNXlkdXCHcdM5mX9pw
提取码:rzd7
解压 apache-maven-3.6.1.rar 既安装完成
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141639047-817906694.png)
解压后相应目录说明
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141652029-1355270456.png)
Maven 环境变量 Path 的配置
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141849843-132901610.png)
验证Maven 环境变量配置成功
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141834065-18821138.png)
Maven 仓库的概念
Maven 本地仓库
定义:自己计算机上的一个目录
Maven 中央仓库
定义:由Maven团队维护的全球唯一的仓库
仓库地址:https://repo1.maven.org/maven2/
Maven 第三方仓库(私服)
定义:一般由公司团队搭建的私有仓库
Maven 配置本地仓库
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141904315-540878066.png)
<localRepository>D:\maven_3-6-1\mvn_project</localRepository>
修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库,用来存储jar包。
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141917284-1042427134.png)
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包。
- 如果有,则在项目直接引用。
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
Maven 配置阿里云私服
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141929683-1534602925.png)
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922141940782-993408187.png)
IDEA 配置Maven 构建第一个测试项目
配置IDEA 对应的Maven 环境
- 点击idea左上角
File
选项, 选择 Settings
选项配置
- 搜索 框中 搜索maven 进行 项目的 maven 相应配置操作
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142000135-308892360.png)
- 完成上述操作后,点击idea左上角
File
选项, 选择 New
选项 ,选择 Project...
新建一个maven 项目
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142022222-1310009529.png)
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142036052-2081814109.png)
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142046946-957510494.png)
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142058180-1494952501.png)
<?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>com.wanghao</groupId>
<artifactId>maven-project</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- end -->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.wanghao)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 maven-project)
- version:定义当前项目版本号
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142109877-187028112.png)
<dependencies>
<!-- 导入 mysql 驱动jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- end -->
<!-- 导入 druid 驱动jar包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<!-- end -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
在项目的 pom.xml 中编写 <dependencies> 标签
在 <dependencies> 标签中 使用 <dependency> 引入坐标
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.wanghao)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 maven-project)
- version:定义当前项目版本号
- scope:设置坐标的依赖范围,设置 对应jar包的作用范围:编译环境、测试环境、运行环境
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142122801-2036877307.png)
- compile:作用于编译环境、测试环境、运行环境。
- test:作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided:作用于编译环境、测试环境。
- runtime:作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题
ps:如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
Maven 基本使用
Maven 模型
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142135829-904945556.png)
- 项目对象模型 (Project Object Model)
- 依赖管理模型 (Dependency)
- 插件 (Plugin)
测试项目创建,基于上面已经创建好的 maven-project 项目,创建 HelloWorld.java 和 TestMaven.java
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142149693-1696206747.png)
Maven 常用命令
compile 插件
compile 编译
git地址:https://github.com/apache/maven-compiler-plugin/
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142206778-1680177393.png)
在项目的同目录下,会出现一个 target 目录文件。编译后的字节码文件就放在该目录下。
clean 插件
clean 清理。
git地址:https://github.com/apache/maven-clean-plugin/
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142321651-113368023.png)
test 插件
test 测试
mvn test:该命令会执行所有的测试代码
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142332310-1398742586.png)
package 插件
package 打包
mvn package:在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142342580-1603972974.png)
install 插件
install 安装
mvn install:该命令会将当前项目打成jar包,并安装到本地仓库。执行完上述命令后到本地仓库查看结果如下:
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142352796-773461752.png)
Maven 生命周期
![](https://img2022.cnblogs.com/blog/683233/202209/683233-20220922142406439-686822944.png)