Maven能为我们解决什么问题
1:添加第三方jar包
按照最原始的做法,我们是手动复制jar包到项目WEB-INF/lib下,每个项目都会有一份,造成大量重复文件。而Maven将jar包放在本地仓库中统一管理,需要jar包只需要用坐标的方式引用即可。
2:jar包之间的依赖关系
jar包之间往往不是独立的,很多jar需要在其他jar包的支持下才能够正常工作,称为jar包之间的依赖关系。如果我们手动去导入,要知道jar包之间的依赖关系并一一导入是及其麻烦而且容易出错的。如果使用Maven,它能够将当前jar包所依赖的其他所有jar包全部导入。
3:获取第三方jar包
开发过程中我们需要用到很多jar包,每个jar包在官网获取的方式不尽相同,给工作带来了额外困难。但是使用Maven可以以坐标的方式依赖一个jar包,Maven从中央仓库进行下载,并同时下载这个jar包依赖的其他jar包。
4:将项目拆分为多个工程模块
项目的规模越来越大,已经不可能通过package结构来划分模块,必须将项目拆分为多个工程协同开发。
maven的优缺点
优点
- 简化了项目依赖管理
- 易于上手,对于新手来说了解几个常用命令即可满足日常工作
- 便于与持续集成工具(jenkins)整合
- 便于项目升级,无论是项目本身还是项目使用的依赖
- maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
缺点
- Maven是一个庞大的构建系统,学习难度大。
- Maven采用约定约定优于配置的策略,虽然上手容易但是一旦出现问题,难于调试中网络环境
较差,很多repository无法访问
Maven的坐标
Maven其中一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。
maven的坐标通过groupId,artifactId,version唯一标志一个构件。groupId通常为公司或组织名
字,artifactId通常为项目名称,versionId为版本号。
maven的生命周期
Maven的 生命周期:从我们的项目构建,一直到项目发布的这个过程,如下图所示:
每个阶段的说明: