Java充电社
专辑
博文
联系我
本人继续续收门徒,亲手指导
Maven教程
-> 安装、配置、mvn运行过程详解
1、maven入门
2、安装、配置、mvn运行过程详解
3、坐标和依赖详解
4、仓库详解
5、私服详解
6、生命周期和插件详解
7、聚合、继承、裁剪详解
8、多模块任意构建,必备神技能
9、多环境构建支持
10、自定义插件,Maven的生命交给你来设计
上一篇:maven入门
下一篇:坐标和依赖详解
<div style="display:none"></div> **maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。** 这是maven系列第2篇。 ## 本文主要内容 1. linux中安装maven 2. window中安装maven 3. mvn命令运行的原理 4. maven配置设置 ## 本篇环境 1. jdk1.8 2. maven3.6.2 我们要写java代码,需要安装jdk,那我们要使用maven,也类似,需要在我们的机器中安装maven。 ## linux中安装安装maven maven是使用java语言编写的,所以我们要运行maven,需要先安装jdk。 ### 安装jdk #### 下载jdk > 本次我们安装jdk1.8,可以到oracle官网上去下载jdk-8u181-linux-x64.tar.gz,将其放在/opt/jdk目录中,如下: ```shell [root@ady01 jdk]# cd /opt/jdk/ [root@ady01 jdk]# ll total 181300 -rw-r--r-- 1 root root 185646832 Nov 1 13:30 jdk-8u181-linux-x64.tar.gz ``` #### 解压jdk ```shell [root@ady01 jdk]# tar -zvxf jdk-8u181-linux-x64.tar.gz [root@ady01 jdk]# ll total 181304 drwxr-xr-x 7 10 143 4096 Jul 7 2018 jdk1.8.0_181 -rw-r--r-- 1 root root 185646832 Nov 1 13:30 jdk-8u181-linux-x64.tar.gz ``` #### 配置环境变量 > 在/etc/profile文件末尾追加下面几行 ```java export JAVA_HOME=/opt/jdk/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ``` > 这个地方扩展个知识点: > > 有个知识点我们说一下,系统运行java或者其他外部命令的时候,系统是如何找到这些命令的? > > linux中会去PATH对应的所有目录中寻找这个命令,找到了就可以直接运行,如果没有设置PATH,我们需要知道命令的完整路径才可以运行,所以使用PATH更方便一些。 > > window中,也有个系统变量PATH,这个PATH的值是由很多目录的地址组成的,当我们执行一个命令的时候,系统会去PATH对应的所有目录中寻找我们运行的命令,找到了就可以直接运行,比如你们想快速启动其他的一些软件,可以将这些软件的设置到PATH变量中,可以在cmd命令中快速启动了。 #### 运行下面命令使环境变量生效 ```java [root@ady01 jdk1.8.0_181]# source /etc/profile ``` #### 验证jdk是否正常 > 查看jdk版本 ```java [root@ady01 jdk]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) ``` 新建/opt/jdk/HelloWorld.java,内容如下: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("hello maven!"); } } ``` 运行下面的命令: ```java [root@ady01 jdk]# cd /opt/jdk/ [root@ady01 jdk]# javac HelloWorld.java [root@ady01 jdk]# java HelloWorld hello maven! ``` > 恭喜,输出`hello maven`表示正常,jdk安装成功! ### 安装maven #### 下载maven 咱们到maven官网中下载最新的maven,地址如下: ```java https://maven.apache.org/download.cgi ``` 最新的版本是apache-maven-3.6.2,linux中我们需要下载`apache-maven-3.6.2-bin.tar.gz`这个。 ``` [root@ady01 jdk]# mkdir /opt/maven [root@ady01 jdk]# cd /opt/maven/ [root@ady01 maven]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz --2019-11-01 13:47:11-- http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-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: 9142315 (8.7M) [application/octet-stream] Saving to: ‘apache-maven-3.6.2-bin.tar.gz’ 100%[==================================================================================================================================>] 9,142,315 10.2MB/s in 0.9s 2019-11-01 13:47:13 (10.2 MB/s) - ‘apache-maven-3.6.2-bin.tar.gz’ saved [9142315/9142315] [root@ady01 maven]# ls apache-maven-3.6.2-bin.tar.gz ``` > 上面我们创建了/opt/maven目录用来存放maven相关软件,然后使用到wget命令,这个是linux中的一个命令,可以访问一个http地址,将其下载到当前目录。 #### 解压maven ```shell [root@ady01 maven]# tar -zvxf apache-maven-3.6.2-bin.tar.gz [root@ady01 maven]# ls apache-maven-3.6.2 apache-maven-3.6.2-bin.tar.gz ``` #### maven目录结构 ```java [root@ady01 maven]# ll /opt/maven/maven/ total 40 drwxr-xr-x 2 root root 4096 Nov 1 13:49 bin drwxr-xr-x 2 root root 4096 Nov 1 13:49 boot drwxrwxr-x 3 mysql mysql 4096 Aug 27 23:01 conf drwxrwxr-x 4 mysql mysql 4096 Nov 1 13:49 lib -rw-rw-r-- 1 mysql mysql 12846 Aug 27 23:09 LICENSE -rw-rw-r-- 1 mysql mysql 182 Aug 27 23:09 NOTICE -rw-rw-r-- 1 mysql mysql 2533 Aug 27 23:01 README.txt ``` > 1. bin:存放可以执行的文件 > 2. conf:存放maven的配置文件 > 3. lib:maven是java编写的,里面会用到很多第三方的jar包,这些jar包位于lib中 #### 创建一个软连接指向apache-maven-3.6.2目录 ```shell [root@ady01 maven]# ln -s apache-maven-3.6.2 maven [root@ady01 maven]# ll total 8936 drwxr-xr-x 6 root root 4096 Nov 1 13:49 apache-maven-3.6.2 -rw-r--r-- 1 root root 9142315 Sep 3 05:43 apache-maven-3.6.2-bin.tar.gz lrwxrwxrwx 1 root root 18 Nov 1 13:56 maven -> apache-maven-3.6.2 ``` > `ln –s 源文件 目标文件`是linux中的一个命令,windows中的快捷方式都知道吧,这个相当于给`源文件`创建了一个快捷方式,快捷方式的名称叫做`目标文件`。 > > `ln -s apache-maven-3.6.2 maven`是指给`apache-maven-3.6.2`创建了一个快捷方式`maven`,访问`maven`就相当于访问`apache-maven-3.6.2`。 > > 此处为什么需要用快捷方式? > > 以后升级maven更方便一些,以后如果我们需要将maven升级到最新的版本,比如3.7,那么只需下载3.7到当前目录,再运行一下`ln -s apache-maven-3.7 maven`命令修改一下快捷方式的指向就行了,很方便。 #### 配置maven环境变量 > 在/etc/profile文件末尾追加下面几行 ```java export M2_HOME=/opt/maven/maven export PATH=$M2_HOME/bin:$PATH ``` #### 运行下面的命令让环境变量生效 ```java [root@ady01 maven]# source /etc/profile ``` #### 验证maven是否正常 ```java [root@ady01 maven]# mvn -v Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00) Maven home: /opt/maven/maven Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /opt/jdk/jdk1.8.0_181/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-693.2.2.el7.x86_64", arch: "amd64", family: "unix" ``` > `mvn -v`输出maven的版本号信息,若输出和上面类似,那么恭喜你,maven安装成功! ## window安装maven ### 安装jdk #### 下载jdk 我们以jdk1.8为例,到oracle官网下载jdk-8u121-windows-x64.exe #### 安装jdk文件 双击`jdk-8u121-windows-x64.exe`运行。 更改安装地址,如下: ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/c77f7d4e-72e3-4cab-bdd8-40b0097c93de.png) > 上图中的地址为默认地址,本次我们将其改为`D:\installsoft\Java\jdk1.8.0_121`,大家也可以根据自己的需求修改安装地址。 然后点击`下一步` ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/14b661cc-bf1b-47b8-a5d6-c9c8d7882eff.png) > 上图中是jre的默认地址,我们将其改为`D:\installsoft\Java\jre1.8.0_121`。 #### 配置环境变量 > 桌面上选中`此电脑`->鼠标右键点击`属性`->`高级系统设置`->`高级`->`环境变量`->`新建`,如下: ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/ae19a07b-9eca-42ac-8a6b-e87b827b2d14.png) ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/571617c6-e5bf-4ce6-9bb5-46c599e5ad58.png) ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/18052f7c-9560-4b8f-b092-bbd40e5d60c7.png) ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/11e77547-fbde-4d1d-ac43-bf140c100e7b.png) 上图中新建环境变量`JAVA_HOME`,值为`D:\installsoft\Java\jdk1.8.0_121`,如下图: ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/aee8fab9-fbee-4424-bd08-747912137d53.png) 新建环境变量`CLASSPATH`,值为`.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar` 修改环境变量PATH,在PATH的值中添加`%JAVA_HOME%\bin` #### 验证jdk是否正常 > 查看jdk版本,cmd窗口中运行`java -version`,如下: ```java C:\Users\Think>java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) ``` 新建D:/HelloWorld.java,文件编码格式为`utf-8`,内容如下: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("hello maven!"); } } ``` 运行下面的命令: ```java C:\Users\Think>D: D:\>javac -encoding utf-8 HelloWorld.java D:\>java HelloWorld hello maven! ``` > 恭喜,输出`hello maven`表示正常,jdk安装成功! ### 安装maven #### 下载maven3.6.2 ```java 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz ``` #### 解压 > 放在D:\installsoft\maven目录 ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/63/bb40d5e8-ebb7-4348-a150-ad6ad71d4a44.png) #### 配置环境变量 > 这个地方参考上面jdk环境变量的配置。 新建环境变量`M2_HOME`,值为: ```java D:\installsoft\maven\apache-maven-3.6.2 ``` 修改环境变量PATH,在PATH的值中添加`%M2_HOME%\bin` #### 验证maven是否正常 ```java C:\Users\Think>mvn -v Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00) Maven home: D:\installsoft\maven\apache-maven-3.6.2\bin\.. Java version: 1.8.0_121, vendor: Oracle Corporation, runtime: D:\installsoft\Java\jdk1.8.0_121\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" ``` > `mvn -v`输出maven的版本号信息,若输出和上面类似,那么恭喜你,maven安装成功! ## Maven的运行原理详解 > 本文后面会用到`~`这个符号,先对这个符号做一下说明,这个符号表示当前用户的目录 > > window中默认在`C:\Users\用户名` > > linux root用户默认在`/root`目录,其他用户的~对应`/home/用户名` > > 后面的文章中我们就用~表示用户目录,这个地方不再说明。 运行下面命令,看一下效果 ```shell C:\Users\Think>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 ``` 上面运行`mvn help:system`命令之后,好像从` https://repo.maven.apache.org`站点中在下载很多东西,最后又输出了系统所有环境变量的信息。 我们来详细看一下`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 > 上面这种会输出插件的帮助文档,来感受一下: ```shell C:\Users\Think>mvn clean:help [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [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.372 s [INFO] Finished at: 2019-11-01T17:59:04+08:00 [INFO] Final Memory: 15M/487M [INFO] ------------------------------------------------------------------------ ``` 这些后面还会详细介绍。 ## Maven的一些配置 ### 启动文件设置 上面提到了`mvn`运行的时候,会加载启动的配置文件`settings.xml`,这个文件默认在`M2_HOME/conf`目录,一般我们会拷贝一个放在`~/.m2`目录中,前者是全局范围的配置文件,整个机器上所有用户都会受到该配置的影响,而后者是用户范围级别的,只有当前用户才会受到该配置的影响。推荐使用用户级别的,将其放在`~/.m2`目录,而不去使用全局的配置,以免影响到其他用户的使用。还有这样使用方便日后maven版本升级,一般情况下maven整个安装目录我们都不要去动,升级的时候只需要替换一下安装文件就可以了,很方便。 ### 配置本地缓存目录 settings.xml中有个`localRepository`标签,可以设置本地缓存目录,maven从远程仓库下载下来的插件以及以后所有我们用到的jar包都会放在这个目录中,如下: ```java <localRepository>C:/Users/Think/.m1/repository</localRepository> ``` ## 总结 1. 掌握maven的安装过程 2. `~`表示当前用户目录 3. maven的配置文件settings.xml一般我们放在`~/.m2`目录中,方便maven的升级,避免影响其他用户的配置 4. 了解mvn命令的执行过程 <a style="display:none" target="_blank" href="https://mp.weixin.qq.com/s/_S1DD2JADnXvpexxaBwLLg" style="color:red; font-size:20px; font-weight:bold">继续收门徒,亲手带,月薪 4W 以下的可以来找我</a> ## 最新资料 1. <a href="https://mp.weixin.qq.com/s?__biz=MzkzOTI3Nzc0Mg==&mid=2247484964&idx=2&sn=c81bce2f26015ee0f9632ddc6c67df03&scene=21#wechat_redirect" target="_blank">尚硅谷 Java 学科全套教程(总 207.77GB)</a> 2. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484192&idx=1&sn=505f2faaa4cc911f553850667749bcbb&scene=21#wechat_redirect" target="_blank">2021 最新版 Java 微服务学习线路图 + 视频</a> 3. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484573&idx=1&sn=7f3d83892186c16c57bc0b99f03f1ffd&scene=21#wechat_redirect" target="_blank">阿里技术大佬整理的《Spring 学习笔记.pdf》</a> 4. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484544&idx=2&sn=c1dfe907cfaa5b9ae8e66fc247ccbe84&scene=21#wechat_redirect" target="_blank">阿里大佬的《MySQL 学习笔记高清.pdf》</a> 5. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485167&idx=1&sn=48d75c8e93e748235a3547f34921dfb7&scene=21#wechat_redirect" target="_blank">2021 版 java 高并发常见面试题汇总.pdf</a> 6. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485664&idx=1&sn=435f9f515a8f881642820d7790ad20ce&scene=21#wechat_redirect" target="_blank">Idea 快捷键大全.pdf</a> ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/1/2883e86e-3eff-404a-8943-0066e5e2b454.png)
#custom-toc-container