概念

Maven是一款跨平台的项目管理工具,服务于基于Java平台的项目构建、依赖管理和项目信息管理

 

功能

  • Maven是一个强大的构建工具,能够自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署 ;
  • Maven通过一个坐标系统准确地定位每一个构件,找到任何一个Java类库,轻松解决繁杂的依赖问题;
  • Maven帮助我们管理项目中各个角落的项目信息(项目描述、开发者列表、版本控制……),通过Maven生成的站点,可以获得项目文档、测试报告、分析报告、日志报告等项目信息;
  • Maven提供了一个免费的中央仓库,可以找到几乎所有的流行开源类库;
  • Maven对于项目目录结构、测试用例命名方式都有既定的规则,遵循规则就可以免去额外学习成本;

 

Maven安装目录

bin:包含mvn运行的脚本,这些脚本用来配置Java命令;
boot:包含plexus-classworlds文件,是一个类加载器框架;
conf:包含setting.xml文件,全局控制Maven行为;
lib:包含Maven运行时需要的Java类库;

 

Maven生命周期

生命周期包括:清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成

【Maven】认识

clean生命周期:

pre-clean(执行一些清理前的工作)
clean(清理上一次构建生成的文件)
post-clean(执行一些清理后的工作)

default生命周期:

validate(验证)
initialize(初始化)

generate-sources(生成来源)
process-sources(处理项目主资源文件-主要是变量替换)
generate-resources(生成资源)
process-resources(处理资源)
compile(编译)
process-classes(处理类文件)

generate-test-sources(生成测试来源)
process-test-sources(处理项目测试资源文件-主要是变量替换)
generate-test-resources(生成测试资源)
process-test-resources(处理测试资源)
test-compile(测试编译)
process-test-classes(处理测试类文件)
test(测试)

prepare-package(准备打包)
package(打包)

pre-integration-test(执行集成测试前的工作)
integration-test(集成测试)
post-integration-test(执行集成测试后的工作)

verify(检查)
install(安装)
deploy(部署)

site生命周期
pre-site(执行生成站点前的工作)
site(生成站点)
post-site(执行生成站点后的工作)
site-deploy(发布站点)

 

Maven坐标

为了能自动化的解析任何一个Java构件,Maven就需要将他们唯一标识,这就是依赖管理的底层基础——坐标

一组Maven坐标是由一些元素定义的:groupId,artifactId,version,packaging,classifier

  • groupId:定义当前Maven项目隶属的实际项目;
  • artifactId:定义项目中的一个模块;
  • version:定义当前项目版本;
  • packaging:定义项目打包方式;
  • classifier:定义构建输出的附属构件;

 

Maven仓库

【Maven】认识

获取构件

当Maven根据坐标寻找构件的时候,如果本地仓库存在此构件,则直接使用;
如果本地仓库不存在,或者需要查看是否有更新的构建版本,就回去远程仓库查找,发现构件下载到本地再使用;

仓库说明

本地仓库:用户目录下的 .m2/repository/ 路径即为本地仓库(可通过复制安装目录下settings.xml到.m2/下,修改localRepository元素即可自定义本地仓库目录地址);

中央仓库:Maven核心自带的远程仓库,包含绝大部分开源构件;

私服:
一种特殊的远程仓库,架设在局域网内的仓库服务,代理远程仓库,供局域网内的Maven用户使用;
如果私服上不存在,就从远程仓库下载,缓存在私服后,为Maven用户提供服务;
一些无法从外部仓库下载到的构件也能上传到私服供大家使用;
好处:节省外网带宽;加速Maven构建;部署第三方构件;提高稳定性;降低中央仓库负荷;

快照版本机制
构建成功的的构件部署到仓库,其他人可以不考虑该构件的构建,同时可以获得该构件的最新版本

 

小结

从生命周期角度,Maven帮我们管理软件的各个阶段要做的工作;
从坐标角度,Maven帮我们唯一定位了我们需要的jar包;
从仓库角度,Maven帮我们更方便容易的获取jar包;
总之,一个很好的项目管理工具

相关文章:

  • 2021-09-20
  • 2021-08-11
  • 2021-07-19
  • 2021-11-23
  • 2021-10-03
  • 2021-11-16
  • 2022-01-08
猜你喜欢
  • 2021-06-04
  • 2021-10-28
  • 2021-05-03
  • 2021-10-01
  • 2021-11-29
  • 2022-01-13
相关资源
相似解决方案