在Windows上安装Maven
在安装Maven之前,先确保你的电脑上已安装JDK,由于网上安装JDK的教程不尽其数,所以就不再重复。打开Windows命令行,来检查Java安装:
我们到Maven的官网去下载Maven文件,笔者在写这篇文章的时候,最新的Maven版本是3.6.3的压缩包,解压之后我们配置Maven的环境变量,在系统变量中新建一个变量,变量名为M2_HOME,变量值为Maven的安装目录,比如笔者的Maven压缩包是解压在D盘的F目录下:
因此笔者的Maven安装目录则为:D:Fmavenapache-maven-3.6.3。接着在系统变量中找到一个名为Path的变量,在变量值的末尾加上%M2_HOME%in;。注意:多个值之间要用分号隔开。值得注意的是Path变量,当我们再CMD中输入命令时,Windows会在当前目录中寻找可执行的文件或脚本,如果没有找到,Windows会接着遍历环境变量Path中定义的路径。由于将%M2_HOME%in配置到Path中,而这里%M2_HOME%实际上是引用了另一个变量,其值时Maven的安装目录。因此Windows会执行命令时会搜索D:Fmavenapache-maven-3.6.3in,而mvn执行脚本的位置就在这里。
因为配置新的环境变量后需要打开新的CMD窗口才能生效,所以我们打开一个新的CMD窗口检查Maven的安装情况:
另外在多说一点,为什么我们不直接在Path环境变量中配置D:Fmavenapache-maven-3.6.3in,而要多一个M2_HOME的环境变量呢?因为未来我们可能升级Maven的版本,如果我们频繁的修改Path环境变量中的值,有可能一不小心就改动到其他的配置,从而产生别的错误,而有了M2_HOME这个环境变量,我们只要将这个变量指向新的Maven版本即可,就不需要再去修改Path的值了。
安装目录分析
前面讲M2_HOME环境指向Maven的安装目录,之后我们都用M2_HOME指代安装目录。下面看一下该目录的结构和内容:
- bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。其中mvn是基于Unix平台的shell脚本,mvn.cmd是基于Windows平台的bat脚本。在命令行输入一个mvn命令时,实际上就是调用这些脚本。该目录还包含mvnDebug和mvnDebug.cmd两个文件,分别也是Unix和Windows上的脚本。mvnDebug和mvn脚本有什么关系呢?打开文件我们可以看到,mvnDebug和mvn大致类似,只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用就是在运行Maven时开启debug,以便调式Maven本身。此外,该目录还包含m2.conf文件,这是classworlds的配置文件,后面会介绍classworlds。
- boot:该目录下有一个文件plexus-classworlds-2.6.0.jar。plexus-classworlds是一个类加载器框架,相对于默认的Java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加在自己的类库。对于一般的Maven用户来说,不需要关心这个文件。
- conf:该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为。
- lib:该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.6.3.jar、maven-model-3.6.3.jar之类的文件,此外这里还包含一些Maven用到的第三方依赖如commons-cli-1.4.jar、commons-lang3-3.8.1.jar等等。
- LICENSE:记录了Maven使用的软件许可证Apache License Version2.0。
- NOTICE:记录了Maven包含的第三方软件。
- README.txt:包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。
配置Maven本地仓库
Maven的本地仓库主要用于存放我们所需要的的jar包,开发项目时项目首先会从本地仓库中获取jar包,当无法获取指定jar 包的时候,本地仓库会从中央仓库中下载jar 包,并放到本地仓库中以备将来使用。默认地址位于 C:Users用户名.m2 目录下。如果不修改的话,C盘下的本地仓库会占用越来越多的磁盘空间,通常是不建议放仓库放在C盘,我们可以通过在M2_HOMEconfsetting.xml配置文件中修改配置,来修改仓库的位置。
我们先在setting.xml文件中全局搜索localRepository,会找到一段注释:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
我们在注释下面添加这样一段代码:
<localRepository>D:Fworkjavamaven_repository</localRepository>
就可以修改仓库的位置了。
设置镜像
由于墙的原因,我们用Maven在拉取jar包时,往往会遇到网络原因的错误,同样可以修改M2_HOMEconfsetting.xml文件来配置镜像,首先我们全局搜索mirrors,会找到这样一段代码:
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> </mirrors>
我们在mirrors元素中添加下面的代码,就可以使用阿里云镜像:
<mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
到此为止,我们基本上完成了Maven的安装与配置。