前言:maven从初识到现在系统学习,觉得其只是一个使用工具,尤其读到同样是构建工具 gradle 相关文章时。因此,我觉得对maven的学习暂 停留到对 maven工具的系统性认识以及对maven的熟练使用即可。
1.maven 是什么?
maven 是一个 java 项目构建工具,将过去凌乱的项目结构、打包、编译、依赖管理等流程标准化、自动化了。
2.maven的核心点
maven 的核心功能在于项目结构管理、依赖管理、构建流程管理。
- 项目结构管理
maven基于“约定大于配置”,规范了java项目结构安排,如典型的 src/main/java|resource 目录结构。
同时,maven也加入了项目模块化管理,以pom文件为基础,形成 多模块聚合、父子模块继承等模块管理功能。 - 依赖管理
maven通过pom文件中 等标签管理项目依赖。通过groupId、artifactId、version唯一区分一个依赖。
其通过pom文件分析项目所需依赖,通过自身建立的 仓库(本地仓库、私服、中央仓库) 拉取所需jar包,解决资源重复问题。
因项目所需jar包内的依赖,可能产生依赖名称相同却版本不同的jar包,maven自身设置了最短路径以及最先声明的依赖冲突解决方法,但该方法存在危险性,推荐做法是通过管理jar包版本,或者直接手动 exclude 掉冲突的 jar包。
maven也提供了在不同运行范围管理依赖的功能,即 - 构建流程
鉴于过去项目打包、编译等环节的杂乱无章,maven首先提出了构建生命周期概念,包括clean、default、site,针对生命周期的定义,对每一个生命周期,又细分出了phase,即一个生命周期内存在多个phase,且phase的执行有前置性,即执行某一个phase,会首先执行其前置phase,因此生命周期有一组串行phase组成,而针对该生命周期特点,对phase进行了具体化,如clean周期中的pre-clean、clean,default周期中的compile、test等,而后针对每一个phase又进行了插件式的实现(如在idea右侧可见到),实现了对项目整个构建流程的标准化。
3.maven的使用
详细的maven使用,可百度或参考前人博文:
https://blog.youkuaiyun.com/lovequanquqn/article/details/81627807