一,Maven是什么?
总体来说,Maven是Apache 组织下一个基于Java平台的跨平台项目管理工具。具体包含3大功能:
1,项目构建工具。项目构建包括清理、编译、测试、打包、部署等。常用的构建工具还有Make和Ant:Make产生较早,缺点是不能跨平台以及语法复杂;Ant是Apache 组织下的一个跨平台的项目构建工具,它基于任务和依赖的构建系统,是过程式的。开发者需要显式地指定每一个任务,每个任务包含一组由 XML 编码的指令,必须在指令中明确告诉 Ant 源码在哪里,结果字节码存储在哪里,如何将这些字节码打包成 JAR 文件。Ant 没有生命周期,你必须定义任务和任务之间的依赖,还需要手工定义任务的执行序列和逻辑关系,造成了大量的代码重复。而maven采用的约定优于配置思想在大型项目中可以提高效率,它有约定的目录结构(表 1)和生命周期,项目构建的各阶段各任务都由插件实现,开发者只需遵照约定的目录结构创建项目,再配置文件中生命项目的基本元素,Maven 就会按照顺序完成整个构建过程。
2,依赖管理工具。一个项目可能依赖于其他的项目和第三方的组件才能顺利完成,外部的依赖还会有其他依赖,递归地一个个去下载所有这些外部依赖,并且要确保下载的版本都是正确的版本,是一件复杂的工作。Maven提供了仓库的概念,让这些依赖项放进仓库中,项目想要从仓库中去取,我们需要做的就是在pom.xml文件里指定依赖jar包的名称、版本号,Maven会自动下载,递归地去下载依赖的进一步我们也不需要管了。
3,项目信息管理工具。maven基于项目对象模型(POM,project object model)实现项目管理,pom.xml用于项目描述、组织管理、依赖管理和项目信息的管理。除此之外,maven可以很方便地结合svn或git实现版本管理,有了maven,我们不再需要往git或svn提交jar包,项目库的体积大大减小,下载项目变得快多了。只要提交一个pom.xml文件和你的代码,其他人自然也能下载到和你本地一模一样的第三方jar包,本地下载过某个jar包以后,其他项目再用同一个jar包时,maven自然会使用本地仓库文件夹里存在的jar包,不需要再次下载,也不会出现很多个拷贝。(利用maven的scm插件进行版本管理,参考1,参考2)
二,Maven学习参考