乐趣区

Maven基础教程之安装与配置

这又是一个系列,一个要把 Maven 讲透的系列,希望能够对大家有帮助!

前言

至于为什么要写 Maven 这个系列呢?其实我自己还是感慨颇深的,在去年一年的工作中,接触了一帮出差过来支撑的兄弟,但是这帮兄弟也都是刚走出校门的,或者从其它行业转过来做开发的,经验都很少,基础的 Maven 都不会配置,更不要说 Maven 的那些概念了。其实,在我们周围很多的看似很厉害的“大牛”,他能和你侃侃而谈,从人工智能到大数据,从大数据到区块链等等,他们都能说出一二,但是一到落实的实处时,比如让他们“show me your code”的时候,他们总是很痛苦的,或者是漏洞百出的。所以,这个系列一来为需要补充 Maven 基础知识的兄弟提供一个捷径;二来总结一下自己 Maven 知识,以免像那些“大牛”一样。

Windows 上安装 Maven

首先我们需要知道的事情是 Maven 是依赖 JDK 的,所以不管是在 Windows 还是 Linux,需要使用 Maven,就必须要先安装 JDK。每个版本 Maven 对 JDK 的版本要去都不一致,我们可以去 Maven 的官网下载页,可以看到 Maven 的安装要求。

对于 Windows 的安装来说,我们直接下载对应的安装包即可。关于 Windows 上安装 Maven 不是这篇文章的重点,我这里也就一笔带过,推荐网上的一篇教程吧。具体的安装步骤可以看这篇《Maven 在 Windows 上的安装与配置》。

Linux 上安装 Maven

从 Maven 的官网下载安装包以后,进行解压。解压后得到 apache-maven-3.6.0 这个包;然后执行 ln -s apache-maven-3.6.0 maven 命令创建一个软链接,然后在系统环境变量 PATH 中添加以下环境变量:

export M2_HOME=~/maven
export PATH=$PATH:$M2_HOME/bin

检查 Maven 是否安装成功,只需要输入mvn -v,如果输出如下图所示,就是安装成功了。

肯定就有小伙伴会问了,为什么要创建一个软链接。其实在 Linux 上安装软件包,我都有一个习惯,应该是我们整个公司也都是这样要求的。安装软件包时,会在安装目录旁平行的创建一个符号链接,以方便将来升级;以后 Maven 升级时,只需要下载新版本的 Maven 包,解压放在平行目录,然后修改这个链接就可以了。

Maven 安装目录分析

M2_HOME环境变量指向 Maven 的安装目录。我们可以看到 Maven 安装目录下有以下文件和文件夹:

  • conf
    该目录包含了一个非常重要的文件 settings.xml。直接修改该文件,就能在机器上全局地定制 Maven 的行为。而一般情况下,我们都会复制该文件至~/.m2 目录下,然后修改该文件,在用户范围定制 Maven 的行为;
  • bin:该目录包含了 mvn 运行的脚本,这些脚本用来配置 Java 命令,配置好 classpath 和相关的 Java 系统属性,然后运行执行 Java 命令。该目录除了包含 Unix 和 Windows 平台运行的脚本外,还包含一个 m2.conf 文件,这是 classworlds 的配置文件,后续还会细说;
  • boot
    该目录下只有一个 plexus-classworlds-2.5.2.jar 文件,plexus-classworlds是一个类加载器框架,相对于默认的 Java 类加载器,它提供了个更丰富的语法以方便配置,Maven 使用该框架加载自己的类库;
  • lib
    该目录包含了所有 Maven 运行时需要的 Java 类库,Maven 是分模块开发的,所以这里有多个 Jar 包。
  • NOTICE
    记录了 Maven 包含的第三方软件;
  • LICENSE
    记录了 Maven 使用的软件许可证;
  • README.txt
    记录了 Maven 的简要介绍,包含安装需求及如何安装的简要命令等。

Maven 安装最佳实践

  • 最佳实践一:设置 MAVEN_OPTS 环境变量
    运行 mvn 命令实际上是执行了 Java 命令,既然是运行 Java,那么运行 Java 命令可用的参数当然也应该在运行 mvn 命令时可用。

    通常需要设置 MAVEN_OPTS 的值为 -Xms128m -Xmx512m,因为 Java 默认的最大可用内存往往不能够满足 Maven 运行的需要。我们一般把MAVEN_OPTS 设置成环境变量。

  • 最佳实践二:配置用户范围 settings.xml
    Maven 用户可以选择配置M2_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.xml,就不会影响到 Maven 安装文件,升级时就不需要触动settings.xml 文件。

总结

这是一篇特别基础的 Maven 安装教程,对于 Maven 的入门有一定的帮助,希望大家能通过我的整个系列可以入门 Maven,丰富自己的工具库。

2019 年 3 月 23 日,于内蒙古呼和浩特。


退出移动版