1. 安装
Maven不需要作为服务组件安装到Windows上,仅仅需要下载、解压、配置一下环境变量即可。
1.1 JDK和JAVA_HOME
在安装Maven之前,首先要确认你已经正确安装了JDK。Maven可以运行在JDK1.4及以上的版本上。运行命令【echo % java_home % 】检查环境变量JAVA_HOME是否指向了正确的JDK目录;然后,运行命令【java -version】检查jdk版本是否在1.4及以上版本。
1.2 下载Maven
下载Maven3.X(例如Maven3.2.3,目前已发展到Maven3.25版本) http://maven.apache.org/download.html 我们只需下载apache-maven-3.2.3-bin.zip文件即可。如果你对Maven的源代码感兴趣并想自己构建Maven,还可以下载apache-maven-3.2.3-src.zip。
1.3 解压
下载完成,只需要解压apache-maven-3.2.3-bin.zip文件即可,例如我的放到:F:\maven目录下,如下图:
然后配置两个环境变量:
MAVEN_HOME:F:\maven\apache-maven-3.2.3
Path(在其中添加):%MAVEN_HOME%\bin;
1.4 验证
打开命令行,输入:echo%maven_home%,看看配置的maven_home目录是否正确,如下图:
打开命令行,输入:mvn –version。若输出如下内容,则表示Maven安装成功:
2. 目录介绍
如下图中的目录内容:
- Bin:
该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。其中mvn是基于UNIX平台的shell脚本,mvn.bat是基于Windows平台的bat脚本。在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug和mvnDebug.bat两个文件,同样,前者是UNIX平台的shell脚本,后者是windows的bat脚本。那么mvn和mvnDebug有什么区别和关系呢?打开文件我们就可以看到,两者基本是一样的,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,作用就是在运行Maven时开启debug,以便调试Maven本身。
- Boot:
该目录只包含一个文件,以maven 3.0为例,该文件为plexus-classworlds-2.2.3.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。更多关于classworlds的信息请参考http://classworlds.codehaus.org/。对于一般的Maven用户来说,不必关心该文件。
- Conf:
该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。一般情况下,我们更偏向于复制该文件至~/.m2/目录下(这里~表示用户目录),然后修改该文件,在用户范围定制Maven的行为。
- Lib:
该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如mavn-core-3.0.jar、maven-model-3.0.jar之类的文件,此外这里还包含一些Maven用到的第三方依赖如common-cli-1.2.jar、google-collection-1.0.jar等等。(对于Maven 2来说,该目录只包含一个如maven-2.2.1-uber.jar的文件原本各为独立JAR文件的Maven模块和第三方类库都被拆解后重新合并到了这个JAR文件中)。可以说,这个lib目录就是真正的Maven。关于该文件,还有一点值得一提的是,用户可以在这个目录中找到Maven内置的超级POM,这一点在8.5小节详细解释。其他:LICENSE.txt记录了Maven使用的软件许可证Apache
License Version 2.0;NOTICE.txt记录了Maven包含的第三方软件;而README.txt则包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等等。
3. 与Eclipse集成
在Eclipse 安装 Maven 的 m2eclipse 插件即可。安装步骤如下:
3.1 安装方法一:
启动Eclipse,Help--> Install New Software…
点击Work with:字段边上的Add按钮,会得到一个新的AddRepository对话框
在Name字段中输入m2e,Location字段中输入http://download.eclipse.org/technology/m2e/releases,然后点击OK。
Eclipse会下载m2eclipse安装站点上的资源信息。等待资源载入完成之后,可以看到图所示的界面:
选中m2eclipse的核心模块Maven Integration for Eclipse(Required),选择后单击Next按钮,Eclipse会自动计算模块间依赖,然后给出一个将被安装的模块列表。确认无误后,继续单击Next按钮,这时会看到许可证信息。m2eclipse使用的开源许可证是Eclipse
Public Licensevl.0,选择I accept theterms of the license agreements,然后单击Finish按钮,
接着就耐心等待Eclipse下载安装这些模块即可。
3.2 安装方法二:
启动Eclipse,Help -->Eclipse MarketPlace,在打开的界面搜索框中输入maven查找m2eclipse插件,出现如下图:
选择Maven Integrationfor Eclipse,直接点击Install,选择后confirm,选择I accept the termsof the license agreements,然后点击Finish,接着就耐心等待Eclipse安装完成即可。
3.3 检查是否安装成功
(1) 点击Help – about eclipse
点击installationdetails
在Installed Software目录下看是否存在Maven Integration for Eclipse,如下图:
(2) 再检查eclipse是否可以创建Maven项目了
File-New- Other,找到Maven项,如果展开一切正常,说明m2eclipse已经正确安装了。
4. 推荐配置
4.1 设置MAVEN_OPTS环境变量
前面介绍Maven安装目录时我们了解到,运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行Maven命令时可用。这个时候,MAVEN_OPTS环境变量就能派上用场。
通常需要设置MAVEN_OPTS的值为-Xms128m –Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.Out0fMemeoryError。因此,一开始就配置该变量是推荐的做法。
4.2 配置用户范围settings.xml
用户可以选择配置$MAVEN_HOME/conf/settings.xml、或者~/.m2/settings.xml。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
推荐使用用户范围的settings.xml,主要是为了避免无意识地影响到系统中的其他用户。如果有切实的需求,需要统一系统中所有用户的settings .xml配置,当然应该使用全局范围的settings .xml。
除了影响范围这一因素,配置用户范围settings .xml文件还便于Maven升级。直接修改conf目录下的,settings.xml会导致Maven升级不便,每次升级到新版本的Maven,都需要复制settings.xml文件如果使用~/.m2目录下的settings.xrnl.就不会影响到Maven安装文件,升级时就不需要触动settings.xml文件。
4.3 不要使用IDE内嵌的Maven
无论Eclipse还是NetBeans,当集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和在命令行使用的Maven不是同一个版本。这里又会出现两个潜在的问题:首先,较新版本的Maven存在很多不稳定因素,容易造成一些难以理解的问题; 其次,除了IDE,也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的:因此,应该在IDE中配置Maven插件时使用与命令行一致的Maven。
在m2eclipse环境中,单击菜单栏中的Window。,然后选择Preferences,在弹出的对话框中,展开左边的Maven项,选择Installations子项,在右边的面板中,能够看到有一个默认的Embedded Maven安装被选中了单击Add…按钮,然后选择Maven安装目录MAVEN_HOME,添加完毕之后选择这一个外部的Maven,如下图:
5. 总结
本文主要介绍了Maven在Windows操作系统上的安装配置,下载-解压-配置环境变量; 以及Maven目录的信息介绍,主要是我们经常操作的settings.xml文件;以及与Eclipse的集成,主要是安装m2eclipse插件;以及一些推荐配置。