1.概述
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标
(goal)的逻辑。
Maven: 专门用于管理和构建Java项目的工具,主要功能:
-
提供了一套标准化的项目结构
Maven提供了一套标准化的项目结构,所有的编译器使用Maven构建的项目结构完全一样,所有的编译器创建的Maven项目都可以通用
-
提供了一套标准化的构建流程
编译→测试→打包→发布 -
提供了一套依赖管理机制
依赖管理——管理项目所依赖的第三方资源(jar包、插件…)
Maven模型:
仓库:
- 本地仓库:计算机上的一个目录
C盘User中的.m的文件夹 - 远程仓库(私服):一般由公司团队搭建的私有仓库
- 中央仓库:由Maven团队维护的全球唯一的仓库(免费开源):https://repo1.maven.org/maven2/
Jar包导入流程:
- pom.xml中写好依赖配置
- 现在本地仓库中匹配依赖,没有会去中央仓库匹配、自动下载到本地仓库
- (对于公司而言,先去本地仓库匹配,再去私服匹配,再去中央仓库,自动下载到私服,再下载到本地仓库)
- 引用本地仓库的依赖
2.安装配置
2.1 官网下载
http://maven.apache.org/→DownLoad→Previous Releases→ archives →选择下载版本→binaries→选择bin.tar.gz开始下载
2.2 安装&配置
解压→配置环境变量→配置本地仓库→配置阿里云私服
解压:
操作过于简单,省略
配置环境变量:
验证:cmd输入:mvn -version
配置成功!
配置本地仓库: conf/settings.xml中的<localRepository>
标签
记得保存
配置阿里云私服: conf/settings.xml中的<mirrors>
标签
提高jar包或插件的下载速度
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
记得保存
3.Maven基本使用
3.1 常用命令
可以在cmd中对maven工程进行编译、测试、运行、打包、安装、部署
在一个maven项目中打开命令行窗口
1.compile
mvn compile
是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下
首次执行指令会先下载依赖和插件到本地仓库,然后再编译
自动生成 target 目录,.class 文件存在其中,编译完成
-
test
mvn test
会执行 src/test/java 下的单元测试类 -
package
mvn package
将Java工程文件打成jar包,web工程文件打成war包 -
install
mvn install
将当前项目安装到本地仓库 -
clean
mvn clean
删除 target 目录及内容
3.2 生命周期
maven 对项目构建过程分为三套相互独立的生命周期
- Clean 在进行真正的构建之前进行一些清理工作
- Default 构建的核心部分,编译,测试,打包,部署等等
- Site 生成项目报告,站点,发布站点
在同一生命周期内,执行后边的命令,前边的命令都会自动执行
4. IDEA配置Maven
- 创建一个空的项目
- File-setting
可以不配置,就用IDEA内置的版本,也可以配置为自己安装的版本
- 创建Maven项目(不用模板)
- 新建一个类
- 导入项目
打开maven面板
导入项目
Maven插件:Maven Helper
重启IDEA后可用
5.依赖管理
5.1 Maven坐标
Maven坐标:
- 资源的唯一标识
- 通过坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成:
- groupId:定义当前Maven项目隶属组织名称(一般为公司域名反写)
- artifactId:定义当前Maven项目名称(模块名称)
- version:版本号
5.2 依赖管理
官网查看依赖配置书写:http://mvnrepository.com/
以junit单元测试依赖为例:
打开pom.xml文件
- 导入依赖(点击刷新,使依赖生效)
自动生效设置(无需刷新)
- 快速导入本地仓库的jar包
alt insert
5.3 依赖范围
在坐标中使用scope
标签设置坐标的依赖范围:编译环境、测试环境、运行环境
依赖范围 | 编译 | 测试 | 运行 |
---|---|---|---|
compile(默认) | √ | √ | √ |
test | √ | ||
provided | √ | √ | |
runtime | √ | √ | |
system | √ | √ | |
import |