Maven是一个项目管理的工具。根据许晓斌老师的《Maven实战》一书:它主要完成的工作包含三个方面:构建项目、依赖管理、项目信息管理。
何为构建?在我们编写完代码后,我们会编译、测试、打包、部署我们的代码,这个过程就是构建项目——个人理解就是把我们编写的代码(包括.java,xml等配置文件)转变成可以对外提供服务的工作进程的一整个过程。
在Maven诞生之前,我们曾使用Make作为构建工具,但是Make工具与操作系统关联,于是该工具难以实现跨平台的使用。但是我们的日常开发和测试也需要运行项目,这通常是在图形化操作系统中完成的(例如Windows,MacOS),而服务的最终部署又常常在Linux上,这就意味着我们要在不同平台使用Make工具,而Make工具不支持跨平台。于是Ant应运而生,Ant可以实现跨平台的使用,但是像Make一样仍然需要维护一个build.xml脚本用于构建项目,但是不同项目的build.xml是有诸多重复的——这意味着我们在做一些重复的工作。
Maven的出现解决了这个问题。Maven的构建非常简单,不需要开发者耗费大量精力去维护构建脚本,在构建项目的不同生命周期中,Maven为我们提供了大量现成的插件,于是我们只需要在IDE中集成Maven后,仅点点鼠标即可完成此前复杂的构建过程。
在Maven诞生之前,开发者需要手动去下载需要的jar包并添加到类路径下。这样的问题是什么呢?
Maven如何解决这些问题:通过在pom文件中声明所需依赖的方式,避免了开发者去手动下载jar包这一繁琐的过程;Maven的依赖管理在一定程序上解决了版本冲突的问题。