(二)《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】

posted @ 2018-02-27 15:46  flyingweb  阅读(206)  评论(0编辑  收藏  举报