theboyaply
theboyaply
发布于 2020-04-02 / 718 阅读
0
0

2-maven 安装及运行过程详解

原文:https://mp.weixin.qq.com/s/7LGakBJvQUjiVEUgdSe_Aw

maven 是使用 java 语言编写的,要运行 maven,我们需要先安装 jdk。

你可以参考这篇文章来安装 jdk:https://www.theboyaply.cn/archives/jdk-install

下载 mvn

你可以从这里下载:

链接:https://pan.baidu.com/s/13UwYilMn-2LTBA5Vqyo7ag
提取码:6xgd

也可以从这里下载:

maven 官网:https://maven.apache.org/download.cgi

清华大学开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/

Linux 下安装 mvn

下载

[root@CentOS7 opt]# mkdir maven
[root@CentOS7 opt]# cd maven/
[root@CentOS7 maven]# pwd
/opt/maven
[root@CentOS7 maven]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
--2020-04-02 10:12:55--  http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9506321 (9.1M) [application/x-gzip]
Saving to: ‘apache-maven-3.6.3-bin.tar.gz’

100%[=====================================================================================================================================================>] 9,506,321   8.01MB/s   in 1.1s   

2020-04-02 10:12:56 (8.01 MB/s) - ‘apache-maven-3.6.3-bin.tar.gz’ saved [9506321/9506321]

[root@CentOS7 maven]# ls
apache-maven-3.6.3-bin.tar.gz

上面我们使用 wget 命令下载,当然你也可以通过其他方式下载然后放入这个目录中。需要注意的是 Linux 系统下应该下载 xxx.tar.gz 的包。

解压

[root@CentOS7 maven]# tar -zxvf apache-maven-3.6.3-bin.tar.gz
[root@CentOS7 maven]# ls
apache-maven-3.6.3  apache-maven-3.6.3-bin.tar.gz
[root@CentOS7 maven]# cd apache-maven-3.6.3
[root@CentOS7 apache-maven-3.6.3]# ls
bin  boot  conf  lib  LICENSE  NOTICE  README.txt

maven 目录结构

  1. bin:存放可以执行的文件
  2. conf:存放 maven 的配置文件
  3. lib:maven是 java 编写的,里面会用到很多第三方的 jar 包,这些 jar 包位于 lib 中

创建一个软连接指向apache-maven-3.6.3目录

[root@CentOS7 apache-maven-3.6.3]# ln -s /opt/maven/apache-maven-3.6.3/ maven
[root@CentOS7 apache-maven-3.6.3]# ll
total 48
drwxr-xr-x 2 root root  4096 Apr  2 10:14 bin
drwxr-xr-x 2 root root  4096 Apr  2 10:14 boot
drwxr-xr-x 3 root root  4096 Nov  7 20:32 conf
drwxr-xr-x 4 root root  4096 Apr  2 10:14 lib
-rw-r--r-- 1 root root 17504 Nov  7 20:32 LICENSE
lrwxrwxrwx 1 root root    30 Apr  2 10:29 maven -> /opt/maven/apache-maven-3.6.3/
-rw-r--r-- 1 root root  5141 Nov  7 20:32 NOTICE
-rw-r--r-- 1 root root  2612 Nov  7 20:32 README.txt

说明:

运行命令后使用 ll 查看,会多出一条 maven -> /opt/maven/apache-maven-3.6.3/ 的结果。

ln –s 源文件 目标文件 是 linux 中的一个命令,相当于给 源文件 创建了一个快捷方式,快捷方式的名称叫做 目标文件。后面访问maven 就相当于访问 /opt/maven/apache-maven-3.6.3

此处为什么需要用快捷方式?

以后升级 maven 更方便一些,以后如果我们需要将 maven 升级到最新的版本,比如3.7,那么只需下载3.7到当前目录,再运行一下 ln -s /opt/maven/apache-maven-3.7/ maven 命令修改一下快捷方式的指向就行了,很方便。若更新软连接时提示 maven 已存在,使用 rm maven 删除已有软连接后再次创建即可。

配置环境变量

在 /etc/profile 文件末尾追加下面几行:

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

说明:

如果上面没有添加软连接,那么这里应该是:

export M2_HOME=/opt/maven/opt/maven/apache-maven-3.6.3
export PATH=$M2_HOME/bin:$PATH

重新加载 配置文件

source /etc/profile

验证

[root@CentOS7 apache-maven-3.6.3]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/maven/apache-maven-3.6.3
Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: /opt/jdk/jdk1.8.0_231/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.21.3.el7.x86_64", arch: "amd64", family: "unix"

mvn -v 输出 maven 的版本号信息,若输出和上面类似,那么恭喜你,maven 安装成功!

Windows 下安装 mvn

找一个合适的目录,放入下载好的的 maven,我们这里放在 D:\apache 目录下。需要注意的是Windows 系统下应该下载 xxx.zip 的包。

解压并配置环境变量。配置环境变量可参考安装 jdk 时的配置方式。安装 jdk 的文章链接最上方已经给出来了。

配置环境变量

新建环境变量 M2_HOME,值为:

D:\apache\apache-maven-3.6.3

修改环境变量 PATH,在 PATH 的值中添加 %M2_HOME%\bin

验证

C:\Users\theAplyBoy>mvn -v
Apache Maven 3.6.3 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2020-04-2T02:33:14+08:00)
Maven home: D:\apache\apache-maven-3.6.3\bin\..
......

mvn -v 输出 maven 的版本号信息,若输出和上面类似,那么恭喜你,maven安装成功!

mvn 的运行原理

本文后面会用到~这个符号,先对这个符号做一下说明,这个符号表示当前用户的目录

window中默认在C:\Users\用户名

linux root用户默认在/root目录,其他用户的~对应/home/用户名

后面的文章中我们就用~表示用户目录,这个地方不再说明。

运行下面命令,看下效果:

C:\Users\theAplyBoy>mvn help:system
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom (4.7 kB at 4.0 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom (12 kB at 21 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/9/maven-parent-9.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/9/maven-parent-9.pom (33 kB at 44 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.jar (24 kB at 12 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom (15 kB at 13 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/16/maven-plugins-16.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/16/maven-plugins-16.pom (13 kB at 33 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.jar (209 kB at 29 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom (11 kB at 14 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
Progress (1): 153 kB

上面运行 mvn help:system 命令之后,好像从 https://repo.maven.apache.org 站点中在下载很多东西,最后又输出了系统所有环境变量的信息。

如果你修改了 maven 的中央仓库地址,例如修改为阿里云,那么这里就会从阿里云下载:

C:\Users\theAplyBoy>mvn help:system
[INFO] Scanning for projects...
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-help-plugin/maven-metadata.xml
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-help-plugin/maven-metadata.xml (653 B at 93 B/s)
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-help-plugin/3.2.0/maven-help-plugin-3.2.0.pom
......

我们来详细看一下 mvn help:system 这个命令的运行过程:

  1. 运行mvn help:system之后
  2. 系统会去环境变量PATH对应的所有目录中寻找mvn命令,然后在D:\installsoft\maven\apache-maven-3.6.2\bin中找到了可执行的mvn文件
  3. 运行mvn文件,也就是执行mvn命令
  4. 通常一些软件启动的时候,会有一个启动配置文件,maven也有,mvn命令启动的时候会去~/.m2目录寻找配置文件settings.xml,这个文件是mvn命令启动配置文件,可以对maven进行一些启动设置(如本地插件缓存放在什么位置等等),若~/.m2目录中找不到settings.xml文件,那么会去M2_HOME/conf目录找这个配置文件,然后运行maven程序
  5. mvn命令后面跟了一个参数:help:sytem,这个是什么意思呢?这个表示运行help插件,然后给help插件发送system命令
  6. maven查看本地缓存目录(默认为~/.m2目录)寻找是否有help插件,如果本地没有继续下面的步骤
  7. maven会去默认的一个站点(apache为maven提供的一个网站[repo.maven.apache.org],这个叫中央仓库)下载help插件到~/.m2目录
  8. 运行help插件,然后给help插件发送system指令,help插件收到system指令之后,输出了本地环境变量的信息,如果系统找不到指定的插件或者给插件发送无法识别的命令,都会报错

上面这个过程大家再感受一下,maven中所有的命令都是以插件的形式提供的,所以maven扩展也是相当容易的。

mvn [插件名称]:help

上面这种格式会输出插件的帮助文档,比如 mvn clean:help

C:\Users\theAplyBoy>mvn clean:help
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:help (default-cli) @ standalone-pom ---
[INFO] org.apache.maven.plugins:maven-clean-plugin:2.5

Maven Clean Plugin
  The Maven Clean Plugin is a plugin that removes files generated at build-time
  in a project's directory.

This plugin has 2 goals:

clean:clean
  Goal which cleans the build.
  This attempts to clean a project's working directory of the files that were
  generated at build-time. By default, it discovers and deletes the directories
  configured in project.build.directory, project.build.outputDirectory,
  project.build.testOutputDirectory, and project.reporting.outputDirectory.

  Files outside the default may also be included in the deletion by configuring
  the filesets tag.

clean:help
  Display help information on maven-clean-plugin.
  Call
    mvn clean:help -Ddetail=true -Dgoal=<goal-name>
  to display parameter details.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.561 s
[INFO] Finished at: 2020-04-02T11:10:53+08:00
[INFO] ------------------------------------------------------------------------

C:\Users\theAplyBoy>

这些后面还会详细介绍。

mvn 的一些配置

启动文件配置

上面提到了 mvn 运行的时候,会加载启动的配置文件 settings.xml,这个文件默认在 M2_HOME/conf 目录,一般我们会拷贝一个放在 ~/.m2 目录中,前者是全局范围的配置文件,整个机器上所有用户都会受到该配置的影响,而后者是用户范围级别的,只有当前用户才会受到该配置的影响。推荐使用用户级别的,将其放在 ~/.m2 目录,而不去使用全局的配置,以免影响到其他用户的使用。还有这样使用方便日后 maven 版本升级,一般情况下 maven 整个安装目录我们都不要去动,升级的时候只需要替换一下安装文件就可以了,很方便。

配置本地目录缓存

settings.xml 中有个localRepository标签,可以设置本地缓存目录,maven 从远程仓库下载下来的插件以及以后所有我们用到的 jar 包都会放在这个目录中,如下:

<localRepository>D:\apache\.m2\repository</localRepository>

配置中央仓库地址

默认的 maven 仓库地址是国外的,有时候下载依赖会很慢,我们可以在 settings.xml 中修改这个配置,改为国内的仓库地址,比如修改为阿里云的仓库:

<mirrors>
    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

总结

  1. 掌握 maven 的安装过程。
  2. ~ 表示当前用户目录。
  3. maven 的配置文件 settings.xml 一般我们放在 ~/.m2 目录中,方便 maven 的升级,避免影响其他用户的配置。
  4. 了解 mvn 命令的执行过程。
  5. 基本的配置修改。

-- end --


评论