(二)《Maven实战》读书笔记 —— Maven安装和配置
第2章:Maven的安装和配置
第一章介绍了Maven是什么,以及为什么要使用Maven,我们将从本章开始实际接触Maven。本章首先将介绍如何在主流的操作系统(Windows)下安装Maven,并详细解释Maven的安装文件;其次还介绍如何在主流的IDE(Eclipse)中集成Maven,以及Maven安装的最佳实践。
2.1 在Windows上安装Maven
2.1.1 检查JDK安装
在安装Maven之前,首先要确定你已经正确安装了JDK。Maven可以运行在JDK1.4及以上的版本上。查看版本对应连接 http://maven.apache.org/docs/history.html
2.1.2 下载Maven
访问Apache Maven下载页面,下载对应版本的压缩文件(在页面底部有历史版本的链接)。
2.1.3 本地安装
将压缩文件解压到指定的目录中(如 F:\tool\Maven\apache-maven-3.0.5),接着需要设置环境变量M2_HOME为Maven安装目录,然后在Path中添加%M2_HOME%\bin。
打开一个新的命令行窗口,运行如下命令检查Maven安装情况。
2.1.3 升级Maven
在Windows上更新Maven非常简单,只需要下载新的Maven压缩包,解压至本地目录,然后更新M2_HOME环境变量即可。同理,如果需要使用某一旧版本的Maven,也只需要编辑M2_HOME环境变量指向旧版本安装目录。
2.2 安装目录分析
- bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,在命令行输入任何一条mvn命令时,实际上就是在调用这些脚本。该目录还包含了mvnDebug文件,mvnDebug和mvn两者基本一致,只是mvnDebug文件中多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调试Maven本身。次外,该目录还包含m2.conf文件,这是classworlds的配置文件。
- boot:该目录只包含一个文件,该文件为plexus-classworlds-xxx.jar。plexus-classworlds是一个类加载器框架,相对于默认的Java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。
- conf:该目录包含一个非常重要的文件setting.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。一般情况下,我们偏向于复制该文件至~/.m2/目录下(~代表用户目录),然后修改该文件,在用户范围定制Maven的行为。
- lib:该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如maven.core-xxx.jar、maven.model-xxx.jar之类的文件。此外还包含一些Maven用到的第三方依赖,如commom-cli-xxx.jar、google-collection-xxx.jar等。
- 其他的还有:LICENSE.txt记录Maven使用的软件许可证;NOTICE.txt记录Maven包含的第三方软件;README.txt包含了Maven的简要介绍,包括安装需求以及如何安装的简要指令等。
2.3 为IDE安装m2eclipse插件
因为自版本 Eclipse Kepler for javaEE 中就已经默认集成了m2eclipse插件,因此不再赘述。
2.4 Maven安装最佳实践
2.4.1 配置用户范围setting.xml
Maven用户可以选择配置M2_HOME/conf、setting.xml 或者 ~/.m2/setting.xml。前者是全局范围的,这台机器上的所有用户都会直接受该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
推荐使用用户范围的setting.xml,主要是为了避免无意识的影响到系统中的其他用户。只有需要统一系统中所有用户的setting.xml配置时,才使用全局范围的setting.xml。Maven的配置是两者的总和,在二者都具有某种配置时,以用户范围的配置优先。
除了影响范围这一因素,配置用户范围setting.xml文件还便于Maven升级。直接修改conf目录下的setting.xml文件会导致升级不便,每次升级到新版本的Maven,都需要复制setting.xml文件。如果使用用户范围的setting.xml,就不会影响到Maven安装文件,升级时就不需要触动setting.xml文件。
2.4.2 不要使用IDE内嵌的Maven
内嵌的Maven版本通常比较新,但不一定很稳定,而且往往也和在命令行使用的Maven不是同一个版本。这里会出现两个潜在的问题:首先,较新版本的Maven存在很多不稳定的因素,容易造成一些难以理解的问题;其次,除了IDE,也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这不是我们希望看到的。因此,应该在IDE中配置与命令行一致的Maven版本。
【END】