为什么需要用maven

在JAVA项目开发中,一直在使用maven进行依赖管理。但是从未系统地梳理maven的背景和原理,在遇到问题时候可能没办法敏锐嗅到解决方法。

因此,今天对maven产生背景、用途及具体使用进行梳理。如文中有错误或者不准确的地方,欢迎评论与交流。

一、Maven是什么?

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information. --Apache Maven官网解释

Maven的中文名可以叫梅文。按照官网的定义:它是一个的软件项目管理工具。它基于POM(project object model,项目对象模型),可以通过中央化的信息(central piece of information)实现对项目的构建和管理工作。

以上的官方定义,有这样的关键词:项目管理工具;基于POM;中央化的信息; 下面分别说明一下个人的理解。

1.关键词:项目管理工具

(1)maven对项目的管理,最直接管理的就是项目的依赖。依赖就是一些公用的jar包或者war包,这些jar包实现了一些公共的基本功能。如果在每个项目中都实现一遍相同的功能,是非常麻烦的。因此把这些功能抽出来形成共享的依赖包,遇到相同的功能时直接调用相应的依赖就可以。maven就可以来管理这些依赖。

(2)maven对项目的管理还包括对项目结构的统一约定。Maven 提倡使用一个共同的标准目录结构,方便不同开发者的协作,也方便了一些统一的自动化脚本的实现。以下是在IDEA中maven项目的情况,没有包含所有的目录。完整的目录约束可以参见官网中的Standard Directory Layout
在这里插入图片描述

(3)maven对项目的管理还包括快捷的生命周期控制。JAVA开发的生命周期包括:搭建项目结构、编码、测试、编译、打包、发布到环境测试、发布到生产环境。maven实现了自动化的控制,通过简单的命令或者可视化的按钮,即可实现相应生命周期的控制,免去了开发者自己编写大量脚本代码执行的过程。maven提供的生命周期函数如下图所以。
在这里插入图片描述

2.关键词:基于POM

POM(Project Object Model)英文的直译是项目对象的模型,既然都称之为模型,每个maven项目中都需要使用这个POM。个人理解,POM是模型化的、通用化的、基础的、maven的配置文件,包含了项目的基本信息。

POM就是maven项目基本的工作单元,它通过xml文件来实现,例如JAVA项目中的pom.xml。xml文件中包含了有关项目的信息以及Maven用于构建项目的配置详细信息。

在POM中可以指定的一些配置是项目依赖项,可以执行的插件或目标,构建配置文件等等。 也可以指定其他信息,例如项目版本,描述,开发人员,邮件列表等。

个人认为:一方面,POM是maven实现对项目管理的基础,正因为有这种项目模型的存在,约定了文件结构等,才使得开发编程变得规范化,才给统一的自动化管理脚本提供了使用基础;另一方面,POM也可以理解是maven实现对项目管理的具体方式,通过XML文件的方式来具体进行项目的约束和快速构建。

如果对POM的官方介绍感兴趣,可以参考官网POM的介绍

3.关键词:中央化的信息

maven要管理项目依赖的前提是,先有被管理的依赖。maven定义了一种标准,来定义可以共享的java项目/插件,并且把它们集中放在仓库当中,供广大的开发者直接调用。官方提供了中央仓库,里面有常用的依赖。因为这些依赖在不断的积累,为广大开发者提供便利,Maven也被称为accumulator of knowledge(知识的累计者)。

二、为什么要用Maven?

在maven是什么的问题中,提到:maven实现了对项目中依赖的管理。并且,通过中央仓库实现了相同功能模块的共享。而且通过pom.xml文件可以快速实现对一个项目的配置。

在对maven的最基本的功能有了简单了解后,我们再仔细分析到底为什么要用maven。路人甲JAVA公众号JAVA公众号的文章各自分析总结了原因,大家可以查看原文参考。我简单总结和理解如下:

1.更快的管理依赖

如果没有maven,我们引用依赖则需要自己搜索相关的项目jar包,下载后放在自己项目的classpath目录下。

当使用maven时,通过pom.xml文件可以快速实现依赖的配置,通过在pom文件中添加依赖的基本信息,项目可以即可以自己从远程仓库中下载对应的依赖。

总的来说,maven节省了自己检索jar包和自行下载jar包的时间。

2.更好的管理依赖

如果没有maven,jar包版本需要更改的时候,需要重新去检索并下载对应的jar包,然后替换原项目目录下的老版本jar包,如果使用maven,直接在pom.xml文件中修改版本号即可修改对应的版本;同时,jar包之间可能存在依赖版本的冲突问题,嵌套依赖的问题,这些在maven的管理下可以更加方便的解决。

总的来说,maven中pom.xml文件中的版本号实现了对依赖版本更好的管理。

3.更加统一的约定

maven的原则是“约定大于配置”,maven设置了遵循统一的规则。一方面使得开发归家规范化,另一方面基于相对规范的结构产生了一些自动化的工具和插件,给开发者提供更多的方便,比如mybatis三大插件,帮助快速实现数据库连接相关的功能。


文中引用的参考文章如下,如果对具体内容感兴趣,可以点击链接具体了解:
[1] Apache maven project官方网站。http://maven.apache.org/index.html
[2] Apache maven project对文件目录结构的标准。http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
[3] Maven系列:第1篇:什么是maven?为什么需要它?,公众号:路人甲。Java. https://mp.weixin.qq.com/s/J5cbxXjAjf-ytHKL3FGGew
[4]Maven 最 最 最 全教程 !,公众号:Java。https://mp.weixin.qq.com/s/45aV4jdYe-bcvil9O5ZSDQ

猜你喜欢

转载自blog.csdn.net/loongkingwhat/article/details/105440169