2020年的春节有点特殊,全国人民全都宅家抗击疫情,一场没有硝烟的战争在寂静中进行得异常激烈,处在核心战场湖北的我肯定要24小时坚守在自己的阵地里,无非就是在家睡觉吃饭,坚决不出门。但时间久了,自然无聊得紧。于是开始写这篇关于maven的文章。
在此之前如果有人问我,maven 是什么?我的概念就是帮我们管理jar的,其他的知之甚少。本着知其然知其所以然的态度,我觉得有必要对其有个全面的认识。
二,什么是maven
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理的工具
*项目构建:是指项目的清理、编译、测试到生成报告,再到打包和部署。
*依赖管理:对jar依赖包的管理
*项目信息管理:管理原本分散在项目各个角落的项目信息
二,maven的作用
maven这个中间件设计的理念就相当于是个仓库,仓库放的就是各种各样的架包,供所每个所需要jar文件的项目来调用其中的jar文件;
(当a依赖b依赖时,如果添加依赖a,maven会自动添加依赖b)
三,maven仓库
上面我们说maven相当于是个仓库,我们就来说说maven库;maven库分为本地仓库和远程仓库; 而远程仓库又分为:中央仓库、私服、其他公共远程仓库;
当maven根据坐标寻找构件的时候,会首先查看本地仓库,如果本地仓库存在,则直接使用;如果本地不存在,maven会去远程仓库中查找,如果找到了,会将其下载到本地仓库中进行使用,
如果本地和远程仓库都没有找到构件,maven会报错,构件只有在本地仓库中存在了,才能够被maven项目使用。
我们每个人都需要从远程仓库中把需要依赖的构件下载到本地仓库,这对公司的网络要求也比较高,为了节省这个宽带和加快下载速度,我们在公司内部局域网内部可以架设一台服务器,这台服务器起到一个代理的作用,公司里面的所有开发者去访问这个服务器,这台服务器将需要的构建返回给我们,如果这台服务器中也没有我们需要的构建,那么这个代理服务器会去远程仓库中查找,然后将其先下载到代理服务器中,然后再返回给开发者本地的仓库。
总体上来说私服有以下好处:
其他远程仓库
中央仓库是在国外的,访问速度不是特别快,所以有很多比较大的公司做了一些好事,自己搭建了一些maven仓库服务器,公开出来给其他开发者使用,比如像阿里、网易等等,他们对外提供了一些maven仓库给全球开发者使用,在国内的访问速度相对于maven中央仓库来说还是快了不少。
中央仓库、
中央仓库是Maven配置文件中默认的仓库地址,如果用户没有修改仓库配置,那么Maven默认会从中央仓库下载依赖。
中央仓库有几个特点:
四,maven之POM
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构件,声明项目依赖,等等。比如我们需要把项目打成jar包,采用java -jar去运行这个jar包,那这个值为jar;若当前是一个web项目,需要打成war包部署到tomcat中,那这个值就是war。
我们在项目中需要用到maven帮我们解决jar包依赖问题,帮我们解决项目中的编译、测试、打包、部署时,项目中必须要有pom.xml文件,这些都是依靠pom的配置来完成的。
五,maven之生命周期
我们开发一个项目的时候,通常有这些环节:创建项目、编写代码、清理已编译的代码、编译代码、执行单元测试、打包、集成测试、验证、部署、生成站点等,这些环节组成了项目的生命周期,这些过程也叫做项目的构建过程,几乎所有的项目都由这些环节中的其中几个,创建项目和编写代码是我们程序员需要多参与的,其他的都可以做成自动化的方式。
maven约定好了项目的结构,源码的位置、资源文件的位置、测试代码的位置、测试用到的资源文件的位置、静态资源的位置、打包之后文件的位置等,这些都是maven约定好的。
maven生命周期,主要被用于构建应用,有多个阶段,常用的有:
maven之插件
插件的特点
1.maven插件主要是为maven中生命周期中的阶段服务的,maven的生命周期中有哪些阶段,具体每个阶段中执行什么操作,完全是交给插件去干的。
2.maven中的插件就相当于一些工具,比如编译代码的工具,运行测试用例的工具,打包代码的工具,将代码上传到本地仓库的工具,将代码部署到远程仓库的工具等等,这些都是maven中的插件。
3.插件可以通过mvn
命令的方式调用直接运行,或者将插件和maven生命周期的阶段进行绑定,然后通过mvn 阶段
的方式执行阶段的时候,会自动执行和这些阶段绑定的插件。
4.maven中的插件以jar的方式存在于仓库中,和其他构件是一样的,也是通过坐标进行访问。
在pom.xml文件里插件在build->plugins->plugin
中配置,列如:
maven着实强大,以上的内容也算是对maven的有个基本的了解了。
- 海报