Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具
Maven的作用
1.依赖管理:方便快捷的管理项目依赖资源(jar包),避免版本冲突问题
我们有的项目需要大量的jar包,采用手动导包的方式非常繁琐,并且版本升级也不方便。当我们使用maven,只要创建maven工程,只需要在pom.xml配置文件中配置即可。
2.统一项目结构:提供标准,统一的项目结构
我们程序员使用的开发工具很多,但构建出来的项目目录结构有差异,使用Maven提供了标准的项目结构,这样不同开发工具开发的项目之间可以相互导入
pom.xml是maven的核心依赖,当前项目要导入的核心依赖都在里面
3.项目构建:提供便准跨平台的自动化项目构建方式
我们可以通过里面的指令快速完成清理,编译,测试打包等工作
Maven模型
各个插件就可以完成各种功能例如编译插件进行编译,打包阶段进行打包,而每部操作都会产生对应的文件,放在target目录下
项目对象模型是指在pom.xml文件中通过一小段配置信息来 描述这个工程,如下图标明了项目的组织,模块名称,版本。他们称为工程的坐标
当我们要关联jar包,就可以在xml文件当中添加依赖管理模型。在xml文件中用标签添加依赖
添加依赖之后,maven会自动到仓库查找依赖。首先到本地仓库查找,如果本地仓库没有,会连接中央仓库的jar包,下载到本地仓库。为了提高加载速度,还会引用公司自己搭建的仓库(私服),只要公司中有一个人用到了依赖,就会把依赖下载到私服中
仓库:是用于存储资源,管理各种jar包的
Maven安装
1.下载地址:Maven – Download Apache Maven
bin目录存放的是可执行文件,conf目录存放的是配置文件,lib里是存放的jar包资源
2.配置本地仓库:配置一个地址作为本地仓库用来存储下载的jar包资源
方法:修改conf/setting.xml中的<localRepsitory>为一个指定目录
3.配置私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签
4.配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录加入PATH环境变量。
IDEA集成maven
配置maven环境
- 配置当前工程的maven环境
配置安装路径,xml文件和本地仓库
关联的jre是否是对应的版本
和配置java语言的字节码版本
- 配置全局maven环境工程
在主界面配置即可
IDEA创建maven项目
1.创建项目,选择maven Archetype,并修改 Archetype的值
2.填写坐标信息
坐标是资源的唯一标识,通过坐标可以定义资源的唯一位置
使用坐标来定义项目或引入项目中需要的依赖
导入maven项目
方式一:打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可。
如果点没有弹出对话框,点击Apperance勾选进行调出
方式二:模块中导入pom文件
依赖管理
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
配置:
1. 在pom.xml中编写<dependencies>标签2. 在<dependencies>标签中 使用<dependency>引入坐标
3. 定义坐标的 groupld, artifactid, version
4. 点击刷新按钮,引入最新加入的坐标
第一次使用依赖可能未下载,需要点击刷新按钮刷新联网下载依赖
如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。
依赖传递
依赖具有传递性,被依赖的资源如果依赖了其他资源,那么依赖的依赖也会导入
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope> ...< / scope>设置其作用范围
作用范围:
主程序范围有效。(main文件夹范围内)
测试程序范围有效。(test文件夹范围内)
是否参与打包运行。(package指令范围内)
生命周期
Maven中有3套相互独立的生命周期:
clean: 清理工作。
default:核心工作,如:编译、测试、打包、安装、部署等。
site:生成报告、发布站点等。
每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
lifecycle就是生命阶段。
我们来讲几个重要的生命阶段:
clean:移除上一次构建生成的文件
compile:编译项目源代码
test:使用合适的单元测试框架运行测试(junit)
package:将编译后的文件打包,如:jar、war等
install:安装项目到本地仓库
执行指定生命周期的方式:
在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。