Maven 的基础
官网地址
官网:http://maven.apache.org/
Maven 定义
定义:Maven 是一个项目管理和构建的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
Maven 的功能
- 提供标准化的项目结构
- 提供标准化的构建流程(编译,测试,打包,发布......)
- 提供依赖管理机制
提供标准化的项目结构:
Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用
提供标准化的构建流程(编译,测试,打包,发布......):
开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
提供依赖管理机制:
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包,复制到项目中,还要将jar包加入工作环境这一系列的操作
Maven使用标准的 [坐标] 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
Maven 的安装
资料提供,百度网盘地址:
链接:https://pan.baidu.com/s/19u6cmNXlkdXCHcdM5mX9pw
提取码:rzd7
解压 apache-maven-3.6.1.rar 既安装完成
解压后相应目录说明
Maven 环境变量 Path 的配置
验证Maven 环境变量配置成功
Maven 仓库的概念
Maven 本地仓库
定义:自己计算机上的一个目录
Maven 中央仓库
定义:由Maven团队维护的全球唯一的仓库
仓库地址:https://repo1.maven.org/maven2/
Maven 第三方仓库(私服)
定义:一般由公司团队搭建的私有仓库
Maven 配置本地仓库
<localRepository>D:\maven_3-6-1\mvn_project</localRepository>
修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库,用来存储jar包。
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包。
- 如果有,则在项目直接引用。
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
Maven 配置阿里云私服
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
IDEA 配置Maven 构建第一个测试项目
配置IDEA 对应的Maven 环境
- 点击idea左上角
File
选项, 选择Settings
选项配置 - 搜索 框中 搜索maven 进行 项目的 maven 相应配置操作
- 完成上述操作后,点击idea左上角
File
选项, 选择New
选项 ,选择Project...
新建一个maven 项目
- 进行maven 项目的初始化设置
- 验证 maven项目 创建成功
- 配置项目对象【pom.xml】
<?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:定义当前项目版本号
- 配置依赖管理【pom.xml】
<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包的作用范围:编译环境、测试环境、运行环境
- scope 坐标的依赖范围:
- compile:作用于编译环境、测试环境、运行环境。
- test:作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided:作用于编译环境、测试环境。
- runtime:作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题
ps:如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
- maven 坐标参考网站 https://mvnrepository.com/
Maven 基本使用
Maven 模型
- 项目对象模型 (Project Object Model)
- 依赖管理模型 (Dependency)
- 插件 (Plugin)
测试项目创建,基于上面已经创建好的 maven-project 项目,创建 HelloWorld.java 和 TestMaven.java
Maven 常用命令
compile 插件
compile 编译
git地址:https://github.com/apache/maven-compiler-plugin/
在项目的同目录下,会出现一个 target 目录文件。编译后的字节码文件就放在该目录下。
clean 插件
clean 清理。
git地址:https://github.com/apache/maven-clean-plugin/
test 插件
test 测试
mvn test:该命令会执行所有的测试代码
package 插件
package 打包
mvn package:在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)
install 插件
install 安装
mvn install:该命令会将当前项目打成jar包,并安装到本地仓库。执行完上述命令后到本地仓库查看结果如下: