Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
Maven的项目构建:自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。
Maven抽象了一个完整的构建生命周期模型;标准化构建过程。
Maven的依赖管理:通过坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如jar文件)。
Maven的项目信息管理:管理项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。除了直接的项目信息,通过Maven自动生成的站点,以及一些已有的插件,还可以轻松地获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。
Maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。通过一些Maven的衍生工具(如Nexus),还能够对其进行快速地搜索。只要定位了坐标,Maven就能够帮我们自动下载。
使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。
1.检查JDK的安装
安装好JDK(JDK1.4及以上版本)并设置好环境变量
打开命令行运行:
echo %JAVA_HOME%
java -version
2.下载Maven
http://maven.apache.org/ ,版本apache-maven-3.2.1-bin.zip
3.安装
解压到E:\dev\maven下
4.设置环境变量
M2_HOME:E:\dev\maven\apache-maven-3.2.1
PATH新增:;%M2_HOME%\bin
5. 检测安装是否成功
打开命令行运行:
echo %M2_HOME%
mvn -v
有相关信息显示说明安装成功。
6.安装目录分析
(1)M2_HOME
M2_HOME环境变量指向Maven的安装目录。该目录的结构和内容:
1)bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统参数,然后执行Java命令。其中mvn是基于Unix平台的shell脚本,mvn.bat是基于Windows平台的bat脚本。在命令行中输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug和mvnDebug.bat两个文件。那么mvn和mvnDebug有什么区别和关系呢?打开文件查看,可知两者基本一样,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。此外,该目录还包含m2.conf文件,这是classworlds的配置文件。
2)boot:该目录只包含一个文件,Maven3中该文件是plexus-classworlds-2.5.1.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。对于一般的Maven用户来说,不必关心该文件。
3)conf:该目录包含一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(~表示用户目录),然后修改该文件,在用户范围定制Maven的行为。
4)lib:该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.2.1.jar、maven-model-3.2.1.jar之类的文件。此外,还包含一些Maven用到的第3方依赖,如common-cli-1.2.jar、guava-14.0.1.jar等。
5)LICENSE.txt:记录了Maven使用的软件许可证Apache License Version 2.0。
6)NOTICE.txt:记录了Maven包含的第三方软件。
7)README.txt:包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。
(2)~/.m2
命令:
mvn help:system
该命令会打印出所有的Java系统属性和环境变量,这些信息对日常编程工作很有帮助。
该命令会让Maven执行一个真正的任务,从命令行输出可知Maven会下载一些pom文件和jar文件,这些文件都是从Maven的中央仓库下载到Maven的本地仓库的。
当前的用户目录:
Windows XP:C:\Documents and Settings\huhu
Windows 7:C:\Users\huhu
Unix/Linux:cd回车,就可以转到当前用户目录
~:表示当前用户目录。
在用户目录下可以发现.m2文件夹。默认情况下,该文件下放置了Maven本地仓库.m2/repository。所有的Maven构件都被存储到该仓库中,以便重用。Maven根据一套规则来确定任何一个构件在仓库中的位置。
默认情况下,~/.m2目录下除了repository仓库之外没有其他目录和文件了,不过大多数Maven用户需要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml。这是一条最佳实践。
7.设置HTTP代理
有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这时就需要为Maven配置HTTP代理,才能让它正常地访问外部仓库,以下载所需要的资源。
编辑~/.m2/setting.xml文件中如下(如果没有该文件,则复制$M2_HOME/conf/setting.xml)
这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。
这里声明了一个id为my-proxy的代理,
active的值为true表示激活该代理,
protocol表示使用的代理协议,这里是http。
当然,最重要是指定正确的主机名(host元素)和端口(port元素)。
上述XML配置中注释掉了username、password、nonProxyHost几个元素。
当代理服务需要认证时,就需要配置username和password。nonProxyHost元素用来指定哪些主机名不需要代理,可以使用"|"符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不需要通过代理。
8.安装Eclise的Maven插件
Eclipse 4.3(Kepler)默认安装Maven插件。
在Eclipse中,单击菜单栏-File-New-Maven Project,就可以创建Maven项目。
9.Maven安装最佳实践
(1)设置MAVEN_OPTS环境变量
运行mvn命令实际上是执行了java命令,既然是运行java,那么运行java命令可用的参数也应该在运行mvn命令时可用。这个时候MAVEN_OPTS环境变量就能派上用场。
通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为java默认的最大可用内存往往不能满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此。推荐开始就设置该环境变量。
关于设置环境变量,参考设置M2_HOME环境变量的做法,尽量不要直接修改mvn或mvn.bat这两个Maven执行脚本文件。因为修改了脚本文件,升级Maven时,就必须再次修改,比较麻烦,也容易忘记。
同理,应该尽可能地不要去修改Maven安装目录下的任何文件。
(2)配置用户范围settings.xml
Maven用户可以选择配置$M2_HOME/conf/settings.xml或~/.m2/settings.xml。
前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
推荐使用用户范围的settings.xml,主要是为了避免影响到系统中的其他用户。如果需要统一系统中所有用户的settings.xml配置,应该使用全局范围的settings.xml。
使用用户范围的settings.xml还便于Maven升级。
(3)不要使用IDE内嵌的Maven
应该在IDE中配置Maven插件时使用与命令行(因为除了IDE,经常会使用命令行的Maven)一致的Maven。
菜单栏-Windows-Preferences-Maven-Installations:
在右侧的面板中,有一个默认的Embedded Maven被选中。单击"Add..."按钮,然后选择Maven的安装目录M2_HOME,添加完毕之后选择这个外部的Maven。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |