1. 简介
Maven是一个跨平台的项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
2. Maven功能概括
a. 遵循最佳实践的简单项目设置 -- 可以在数秒钟内得到一个新的项目或模块
b. 在所有项目中一致的使用意味着新进入项目的开发人员能够更快上手
c. 优秀的依赖管理,包括自动更新,依赖闭包(也称为传递依赖)
d. 能够很容易地同时与多个项目一起工作
e. 一个庞大且不断增长的开箱即用的库和元数据的存储库,以及最大的开源项目的最新版本的实时可用性维护。
f. 可扩展并且能够方便地使用Java和脚本语言编写插件
g. 使用很少或根本不用额外的配置就能即时访问新的功能
h. Maven之外的依赖管理和部署的Ant任务。
i. 基于模型的构建:Maven可以构建任意数量的项目到预定义的输出类型,如JAR,WAR,或基于元数据发布项目,在大多数情况下不需要任何的脚本。
j. 相干网站项目信息:通过在构建过程中使用相同的元数据,Maven能够生成一个网站或PDF包括任何你想添加的文件,并增加了项目开发进度的标准报告。
k. 发布管理和分销出版:无需太多额外配置,Maven将集成源代码控制系统如CVS并根据特定标签管理项目的发布。它也可以发布到其他项目使用的发布位置。Maven能够发布独立的输出,如JAR,包括其他依赖和文档的归档,或源代码分发。
l. 依赖管理:Maven鼓励使用*存储库的JAR文件和其他的依赖。Maven带有一种机制能够让你项目的客户从*JAR仓库下载构建项目所需的JAR文件,这很像Perl的CPAN库。这使得Maven用户在多个项目中重用的JAR文件,并鼓励项目之间的沟通以确保向后兼容性问题的处理。
3. 安装配置Maven
(1) Windows安装
a. 确认已经正确安装JDK。
b. 下载最新版本的Maven,即apache-maven-3.0.5-bin.zip,下载地址是:http://maven.apache.org/download.html。
c. 解压,我把解压后的目录放在D:\Program Files下。
d. 设置环境变量。新建一个系统变量M3_HOME,值为:D:\Program Files\apache-maven-3.0.5。在系统变量里找到Path,点击编辑,添加变量值"%M3_HOME%\bin".注意:多个值之间需要有分号隔开。
e. 注意Path环境变量。当我们在cmd中输入命令时,Windows首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windows会接着遍历环境变量Path中定义的路径。安装好之后,在使用mvn -v命令来检查配置是否正确。如果安装无误,将会显示Maven的版本信息。
(2) Linux安装
a.下载最新版本的Maven,即apache-maven-3.0.5-bin.tar.gz,下载地址是:http://maven.apache.org/download.html。
b. 解压到本地目录: tar -zxvfapache-maven-3.0.5-bin.tar.gz。
c. 解压后Maven安装目录为apache-maven-3.0.5。虽然直接使用该目录配置环境变量之后就能直接使用Maven了,但推荐在安装目录旁平行地创建一个符号链接,以方便升级(直接把链接指向新版本):ln -s apache-maven-3.0.4 apache-maven
d. 设置环境变量:
export M3_HOME=/home/jackie/Software/apache-maven
export PATH=$PATH:$M3_HOME/bin
一般来说,需要将以上两行命令添加到系统的登录shell脚本中去,这样每次启动一个终端,这些配置就能自动执行。
(3) 检测安装是否成功
cmd窗口执行命令:mvn –v
4. Maven安装目录
(1)bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。其中mvn是基于UNIX平台的shell脚本,mvn.bat是基于Windows平台的批处理文件。同理mvnDebug和mvnDebug.bat分别是UNIX平台和Windows平台的脚本。mvnDebug比mvn多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。该目录还包含m2.conf文件,这是classworlds的配置文件。
(2)boot:该目录只包含一个文件,即plexus-classworlds-2.4.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架架在自己的类库。
(3)conf:该目录只包含一个settings.xml。直接修改该文件,就能在机器上全局的定制Maven行为。推荐做法是复制该文件至用户目录下的.m2目录下,然后修改该文件,在用户范围定制Maven行为。
(4)lib:该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的。
(5)LICENSE.txt:该文件记录了Maven使用的软件许可证Apache License Version 2.0。
(6)NOTICE.txt:记录Maven包含的第三方软件。
(7)README.txt:包含Maven的简介,包括安装需求及如何安装的简要指令等。
5. Maven安装最佳实践
(1)设置MAVEN_OPTS环境变量
通常需要设置MAVEN_OPTS的值,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如项目较大时,使用Maven生成站点需占用大量内存,如果无此配置,很容易得到java.lang.OutofMemeoryError。所以推荐一开始就配置该变量。
(2)配置用户范围settings.xml
为避免影响系统其他用户,推荐使用用户范围的settings.xml,而且便于Maven升级。
(3)不要使用IDE内置的Maven
Eclipse有一个内置的Maven,不一定稳定,而且我们经常会使用命令行的Maven,所以推荐在Eclipse中配置Maven插件时使用与命令行一致的Maven。
6. 参考资料
-
maven官网:http://maven.apache.org/
-
maven权威指南中文版:http://www.sonatype.com/books/maven-book/reference_zh/public-book.html
-
maven仓库搜索:http://www.mvnrepository.com/
- The Maven 2 POM demystified - article at JavaWorld
- Maven for PHP