【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~-LMLPHP


1️⃣ 在 Windows 上安装 Maven

在安装 Maven 之前,首先要确认已经正确安装了JDK,Maven 可以运行在JDK 1.4及以上的版本。打开 Windows 的命令行,运行下面的命令来检查 Java安装:

echo %JAVA_HOME%
java -version

结果如下图所示:

【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~-LMLPHP
命令首先检查环境变量 JAVA_HOME 是否指向了正确的JDK 目录,接着尝试运行 java 命令。如果 Windows 无法正确执行 java 命令,或者无法找到 JAVA_HOME 环境变量,就需要检查 Java是否正确安装了, 或者环境变量是否设置正确。

1.1 下载及安装 Maven

访问 Maven 的下载页面:Maven下载 , 其中包含针对不同平台的各种版本的 Maven 下载文件。对于首次接触 Maven 的朋友来说,推荐使用 Maven 3.0, 因此需要下载 apache-maven-3.0-bin.zip。 当然,如果对 Maven 的 源码感兴趣并想自己构建 Maven, 还可以下载 apache-maven-3.0-src.zip。 该下载页面还提供 md5 校验和 (checksum) 文件 和 asc数字签名文件,可以用来检验 Maven 分发包的正确性和安全性。

然后将安装文件解压到指定的目录中,接着需要设置环境变量,将 Maven 安装配置到操作系统环境中。打开系统属性面板 ( 在桌面上右击 “我的电脑” → “属性” ), 单击高级系统设置, 再单击环境变量 , 在系统变量中新建一个变量, 变量名为 MAVEN_HOME,变量值为 Maven 的安装目录如 D:\bin\apache-maven-3.0。单击 “确定” 按钮,接着在系统变 量中找到一个名为 Path 的变量, 在变量值的末尾加上 %MAVEN_HOME%\bin;。注意:多个值之间需要有分号隔开,然后单击 “确定” 按钮。至此,环境变量设置完成。详细情况如图所示。

【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~-LMLPHP
值得注意的是Path环境变量。当我们在cmd中输入命令时,Windows首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windows会接着遍历环境变量Path中定义的路径。由于将 %MAVEN_HOME%\bin 添加到了Path中,而这里 %MAVEN_HOME%\bin 实际上是引用了前面定义的另一个变量,其值是Maven的安装目录。因此,Windows会在执行命令时搜索目录 D:\bin\apache-maven-3.0\bin, 而 mvn执行脚本的位置就是这里。

了解环境变量的作用之后,现在打开一个新的 cmd 窗口(这里强调新的窗口是因为新的环境变量配置需要新的 cmd 窗口才能生效),运行如下命令检查 Maven 的安装情况:

echo %MAVEN_HOME%
mvn -v

运行结果如图所示。

【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~-LMLPHP
第一条命令 echo %MAVEN_HOME% 用来检查环境变量 MAVEN_HOME安装目录;而 mvn -v执行一条Maven命令,以检查 Windows是否能够找到正确的 mvn。

1.2 升级 Maven

Maven更新比较频繁,因此用户往往会需要更新Maven安装以获得更多、更酷的新特性,并避免一些旧的bug。
在Windows上更新Maven非常简便,只需要下载新的Maven安装文件,解压至本地目录,然后更新 MAVEN_HOME环境变量即可。例如,假设Maven推出了新版本3.1,我们将其下载然后解压至目录 D:\bin\apache-maven-3.1,接着遵照前一节描述的步骤编辑环境变量 MAVEN_HOME,更改其值为 D:\bin\apache-maven-3.1。至此,更新就完成了。同理,如果需要使用某一个旧版本的 Maven,也只需要编辑 MAVEN_HOME 环境变量指向旧版本的安装目录。

2️⃣ 在基于UNIX 的系统上安装 Maven

Maven 是跨平台的,它可以在任何一种主流的操作系统上运行。本节将介绍如何在基于 UNIX的系统(包括LinuxMacOS以及 FreeBSD等)上安装Maven。

2.1 下载和安装

首先,与在 Windows上安装Maven一样,需要检查JAVA_HOME环境变量以及Java命令,这里对细节不再赘述。命令如下:

echo $JAVA_HOME
java -version

接着到 http://maven.apacheorg/download.html 下载 Maven安装文件,如 apache-maven-3.0-bin.tar.gz,然后解压到本地目录:

tar -xvzf apache-maven-3.0-bin.tar.gz

现在已经创建好了一个Maven安装目录 apache-maven-3.0。虽然直接使用该目录配置环境变量之后就能使用Maven了,但推荐做法是在安装目录旁平行地创建一个符号链接,以方便日后的升级:

ln -s
1s -l

接下来,需要设置 MAVEN_HOME环境变量指向符号链接,并且把 Maven安装目录下的 bin/文件夹添加到系统环境变量PATH中:

export MAVEN_HOME=/home/juven/bin/apache-maven
export PATH=$PATH:MAVEN_HOME/bin

一般来说,需要将这两行命令加入到系统的登录 shell脚本中去,以 Ubuntu8.10为例,编辑 ~/.bashre文件,添加这两行命令。这样,每次启动一个终端,这些配置就能自动执行。
至此,安装完成。可以运行以下命令检查 Maven安装:

echo $MAVEN_HOME
mvn -v

2.2 升级 Maven

在基于UNIX的系统上,可以利用符号链接这一工具来简化 Maven的升级,不必像在Windows上那样,每次升级都必须更新环境变量。前一小节中我们提到,解压 Maven安装包到本地之后,平行地创建一个符号链接,然后在配置环境变量时引用该符号链接,这样做是为了方便升级。现在,假设需要升级到新的 Maven3.1版本,将安装包解压到与前一版本平行的目录下,然后更新符号链接指向3.1版的目录便可:

rm apache-maven
ln -s apache-maven-3.1/apache-maven
1s -1

同理,可以很方便地切换到Maven的任意一个版本。现在升级完成了,可以运行 mvn -v进行检查。

2.3 安装目录分析

前面讲述了如何在各种操作系统中安装和升级Maven。现在来仔细分析一下Maven的安装文件。

前面讲到设置 MAVEN_HOME环境变量指向Maven的安装目录,本书之后所有使用MAVEN_HOME的地方都指代了该安装目录。下面看一下该目录的结构和内容:

bin
boot
conf
lib
LICENSE.txt
NOTTCE.txt
README.txt

(1)bin
该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好 classpath 和相关的Java系统属性,然后执行Java命令。其中mvn是基于UNIX平台的 shell脚本,mvn.bat是基于 Windows平台的 bat脚本。在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebugmvnDebug.bat两个文件,同样,前者是UNIX平台的 shell脚本,后者是 Windows平台的 bat脚本。那么 mvnmvnDebug 有什么区别和关系呢?

打开文件我们就可以看到,两者基本是一样的,只是mvnDebug多了一条MAVENDEBUGOPTS配置,其作用就是在运行 Maven时开启 debug,以便调试 Maven本身。此外,该目录还包含 m2.conf文件,这是 classworlds 的配置文件,后面会介绍 classworlds
(2)boot
该目录只包含一个文件,以maven3.0为例,该文件为 plexus-clasworlds-2.2.3.jarplexus-classworlds 是一个类加载器框架,相对于默认的 java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。更多关于classworlds的信息请参考 http://classworlds.codehaus.org/。对于一般的Maven用户来说,不必关心该文件。
(3)conf
该目录包含了一个非常重要的文件 settings.xml。直接修改该文件,就能在机器上全局地定制 Maven的行为。一般情况下,我们更偏向于复制该文件然后修改该文件,在用户范围定制 Maven的行为。后面将会多次提到 settings.xml,并逐步分析其中的各个元素。
(4)lib
该目录包含了所有 Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如 maven-core-3.0.jarmaven-model-3.0.jar之类的文件。此外,这里还包含一些Maven用到的第三方依赖,如 common-eli-1.2.jargoogle-collection-1.0.jar等。对于 Maven2来说,该目录只包含一个如 maven-2.2.1-uber.jar的文件,原本各为独立JAR文件的 Maven模块和第三方类库都被拆解后重新合并到了这个JAR文件中。可以说,lib目录就是真正的Maven。关于该文件,还有一点值得一提的是,用户可以在这个目录中找到Maven内置的超级POM,这一点在后面会详细解释。
(5)其他
LICENSE.txt记录了Maven使用的软件许可证ApacheLicenseVersion2.0; NOTICE.txt 记录了Maven包含的第三方软件;而 README.txt则包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。

除了以上部分,下面介绍 ~/. m2部分。先运行一条简单的命令:mvnhelp:system。该命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的编程工作很有帮助。这里暂不解释help:system涉及的语法,运行这条命令的目的是让Maven执行一个真正的任务。我们可以从命令行输出看到Maven会下载maven-help-plugin,包括pom文件和jar文件。这些文件都被下载到了Maven本地仓库中。

现在打开用户目录,比如当前的用户目录是 C:\Users\JuvenXu\, 你可以在VistaWindows7中找到类似的用户目录。如果是更早版本的Windows,该目录应该类似于C:\Doc-umentandSetings\JuvenXu\。在基于UNIX的系统上,直接输入ed 回车,就可以转到用户目录。

在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件都被存储到该仓库中,以方便重用。可以到 ~/ .m2/reposi-tory/org/apache/maven/plugins/maven-help-plugins/ 目录下找到刚才下载的 maven-help-pluginpom文件和 jar文件。Maven根据一套规则来确定任何一个构件在仓库中的位置,这一点在后面文章中将会详细阐述。由于Maven仓库是通过简单文件系统透明地展示给Maven用户的,有些时候可以绕过Maven直接查看或修改仓库文件,在遇到疑难问题时,这往往十分有用。

默认情况下,~/.m2目录下除了 repository仓库之外就没有其他目录和文件了,不过大多数Maven用户需要复制MAVEN_HOME/conf/settings.xml文件到 ~/.m2/setings.xml

2.4 设置 HTTP 代理

有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。

首先确认自己无法直接访问公共的Maven中央仓库,直接运行命令ping repol.maven.org 可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如现在有一个IP地址为 218.14.227.197,端口为 3128的代理服务,我们可以运行 telnet 218.14.227.197 3128来检测该地址的该端口是否畅通。如果得到出错信息,需要先获取正确的代理服务信息;如果 telnet连接正确,则输入ctrl+], 然后q, 回车,退出即可。

检查完毕之后,编辑 ~/ .m2/settings.xml 文件(如果没有该文件,则复制 $MAVEN_HOME/conf/settings.xml)。添加代理配置如下:

<settings>
	<proxies>
		<proxy>
			<id>my-proxy</id>
			<active>true</active>
			<protocol>http</protocol>
			<host>218.14.227.197</host>
			<port>3128</port>
			<!--
			<username>***</username>
			<password>***</password>
			<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
			-->
		</proxy>
	<proxies>
</settings>

这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明了一个idmy-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和 端口(port元素)。上述XML配置中注释掉了username、password、nonProxyHost几个元素。当代理服务需要认证时,就需要配置usemame和passwordnonProxyHost元素用来指定哪些主机名不需要代理,可以使用“丨”符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名。

3️⃣ 在 IDE中安装Maven插件

本节会先介绍如何在NetBeans上安装Maven插件,如果正在使用NetBeans6.7及以上版本,那么Maven插件已经预装了。你可以检查Maven插件安装,单击菜单栏中的工具,接着选择插件,在弹出的插件对话框中选择已安装标签,应该能够看到Maven插件。

如果在使用NetBeans6.7之前的版本,或者由于某些原因NetBeansMaven插件被卸载了,那么就需要安装NetBeansMaven插件。下面以NetBeans6.1为例,介绍Maven插件的安装。

单击菜单栏中的工具,选择插件,在弹出的插件对话框中选择可用插件标签,接着在右边的搜索框内输人Maven,这时会在左边的列表中看到一个名为Maven的插件。选择该插件,然后单击下面的“安装”按钮。

接着在随后的对话框中根据提示操作,阅读相关许可证并接受,NetBeans会自动帮我们下载并安装Maven插件,结束之后会提示安装完成。之后再单击插件对话框中的已安装标签,就能看到已经激活的Maven插件。

最后,为了确认Maven插件确实已经正确安装了,可以看一下NetBeans是否已经拥有创建Maven项目的相关菜单。在菜单栏中选择文件,然后选择新建项目,这时应该能够看到项目类别中有Maven一项。选择该类别,右边会相应地显示Maven项目和基于现有POM的Maven项目。


【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~-LMLPHP
08-21 04:04