Maven安装配置篇
- 1️⃣ 在 Windows 上安装 Maven
- 1.1 下载及安装 Maven
- 1.2 升级 Maven
- 2️⃣ 在基于UNIX 的系统上安装 Maven
- 2.1 下载和安装
- 2.2 升级 Maven
- 2.3 安装目录分析
- 2.4 设置 HTTP 代理
- 3️⃣ 在 IDE中安装Maven插件
1️⃣ 在 Windows 上安装 Maven
在安装 Maven 之前,首先要确认已经正确安装了JDK,Maven 可以运行在JDK 1.4及以上的版本。打开 Windows 的命令行,运行下面的命令来检查 Java安装:
echo %JAVA_HOME%
java -version
结果如下图所示:
命令首先检查环境变量 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;
。注意:多个值之间需要有分号隔开,然后单击 “确定” 按钮。至此,环境变量设置完成。详细情况如图所示。
值得注意的是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
运行结果如图所示。
第一条命令 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
的系统(包括Linux
、MacOS
以及 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
命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug
和 mvnDebug.bat
两个文件,同样,前者是UNIX
平台的 shell脚本,后者是 Windows平台的 bat脚本。那么 mvn
和 mvnDebug
有什么区别和关系呢?
打开文件我们就可以看到,两者基本是一样的,只是mvnDebug
多了一条MAVENDEBUGOPTS
配置,其作用就是在运行 Maven时开启 debug
,以便调试 Maven本身。此外,该目录还包含 m2.conf
文件,这是 classworlds
的配置文件,后面会介绍 classworlds
。
(2)boot
该目录只包含一个文件,以maven3.0为例,该文件为 plexus-clasworlds-2.2.3.jar
。plexus-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.jar
、maven-model-3.0.jar
之类的文件。此外,这里还包含一些Maven用到的第三方依赖,如 common-eli-1.2.jar
、google-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\
, 你可以在Vista
和 Windows7
中找到类似的用户目录。如果是更早版本的Windows,该目录应该类似于C:\Doc-umentandSetings\JuvenXu\
。在基于UNIX
的系统上,直接输入ed
回车,就可以转到用户目录。
在用户目录下可以发现.m2
文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository
。所有的Maven构件都被存储到该仓库中,以方便重用。可以到 ~/ .m2/reposi-tory/org/apache/maven/plugins/maven-help-plugins/
目录下找到刚才下载的 maven-help-plugin
的 pom
文件和 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
会生效。这里声明了一个id
为my-proxy
的代理,active
的值为true
表示激活该代理,protocol
表示使用的代理协议,这里是http
。当然,最重要的是指定正确的主机名(host元素)和 端口(port元素)。上述XML
配置中注释掉了username、password、nonProxyHost
几个元素。当代理服务需要认证时,就需要配置usemame和password
。nonProxyHost
元素用来指定哪些主机名不需要代理,可以使用“丨”符号来分隔多个主机名。此外,该配置也支持通配符,如*.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基础概念与其他构建工具:理解构建过程与Maven的多重作用,以及与敏捷开发的关系 ~》