MAVEN專題之二、安裝、配置、mvn執行過程詳解
maven系列目標:從入門開始開始掌握一個高階開發所需要的maven技能。
這是maven系列第2篇。
本文主要內容
- linux中安裝maven
- window中安裝maven
- mvn命令執行的原理
- maven配置設定
本篇環境
- jdk1.8
- 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目錄中,如下:
[root@ady01 jdk]# cd /opt/jdk/
[root@ady01 jdk]# ll
total 181300
-rw-r--r--1 root root 185646832Nov113:30 jdk-8u181-linux-x64.tar.gz
解壓jdk
[root@ady01 jdk]# tar -zvxf jdk-8u181-linux-x64.tar.gz
[root@ady01 jdk]# ll
total 181304
drwxr-xr-x 7101434096Jul72018 jdk1.8.0_181
-rw-r--r--1 root root 185646832Nov113:
配置環境變數
在/etc/profile檔案末尾追加下面幾行
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命令中快速啟動了。
執行下面命令使環境變數生效
[root@ady01 jdk1.8.0_181]# source /etc/profile
驗證jdk是否正常
檢視jdk版本
[root@ady01 jdk]# java -version
java version "1.8.0_181"
Java(TM) SE RuntimeEnvironment(build 1.8.0_181-b13)
JavaHotSpot(TM)64-BitServer VM (build 25.181-b13, mixed mode)
新建/opt/jdk/HelloWorld.java,內容如下:
publicclassHelloWorld{
publicstaticvoid main(String[] args){
System.out.println("hello maven!");
}
}
執行下面的命令:
[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,地址如下:
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-0113: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,31510.2MB/s in0.9s
2019-11-0113: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
[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目錄結構
[root@ady01 maven]# ll /opt/maven/maven/
total 40
drwxr-xr-x 2 root root 4096Nov113:49 bin
drwxr-xr-x 2 root root 4096Nov113:49 boot
drwxrwxr-x 3 mysql mysql 4096Aug2723:01 conf
drwxrwxr-x 4 mysql mysql 4096Nov113:49 lib
-rw-rw-r--1 mysql mysql 12846Aug2723:09 LICENSE
-rw-rw-r--1 mysql mysql 182Aug2723:09 NOTICE
-rw-rw-r--1 mysql mysql 2533Aug2723:01 README.txt
- bin:存放可以執行的檔案
- conf:存放maven的配置檔案
- lib:maven是java編寫的,裡面會用到很多第三方的jar包,這些jar包位於lib中
建立一個軟連線指向apache-maven-3.6.2目錄
[root@ady01 maven]# ln -s apache-maven-3.6.2 maven
[root@ady01 maven]# ll
total 8936
drwxr-xr-x 6 root root 4096Nov113:49 apache-maven-3.6.2
-rw-r--r--1 root root 9142315Sep305:43 apache-maven-3.6.2-bin.tar.gz
lrwxrwxrwx 1 root root 18Nov113: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檔案末尾追加下面幾行
export M2_HOME=/opt/maven/maven
export PATH=$M2_HOME/bin:$PATH
執行下面的命令讓環境變數生效
[root@ady01 maven]# source /etc/profile
驗證maven是否正常
[root@ady01 maven]# mvn -v
ApacheMaven3.6.2(40f52333136460af0dc0d7232c0dc0bcf0d9e117;2019-08-27T23:06:16+08:00)
Maven home:/opt/maven/maven
Java version:1.8.0_181, vendor:OracleCorporation, 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
執行。
更改安裝地址,如下:
上圖中的地址為預設地址,本次我們將其改為
D:\installsoft\Java\jdk1.8.0_121
,大家也可以根據自己的需求修改安裝地址。
然後點選下一步
上圖中是jre的預設地址,我們將其改為
D:\installsoft\Java\jre1.8.0_121
。
配置環境變數
桌面上選中
此電腦
->滑鼠右鍵點選屬性
->高階系統設定
->高階
->環境變數
->新建
,如下:
上圖中新建環境變數JAVA_HOME
,值為D:\installsoft\Java\jdk1.8.0_121
,如下圖:
新建環境變數CLASSPATH
,值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
修改環境變數PATH,在PATH的值中新增%JAVA_HOME%\bin
驗證jdk是否正常
檢視jdk版本,cmd視窗中執行
java -version
,如下:
C:\Users\Think>java -version
java version "1.8.0_121"
Java(TM) SE RuntimeEnvironment(build 1.8.0_121-b13)
JavaHotSpot(TM)64-BitServer VM (build 25.121-b13, mixed mode)
新建D:/HelloWorld.java,檔案編碼格式為utf-8
,內容如下:
publicclassHelloWorld{
publicstaticvoid main(String[] args){
System.out.println("hello maven!");
}
}
執行下面的命令:
C:\Users\Think>D:
D:\>javac -encoding utf-8HelloWorld.java
D:\>java HelloWorld
hello maven!
恭喜,輸出
hello maven
表示正常,jdk安裝成功!
安裝maven
下載maven3.6.2
下載地址: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目錄
配置環境變數
這個地方參考上面jdk環境變數的配置。
新建環境變數M2_HOME
,值為:
D:\installsoft\maven\apache-maven-3.6.2
修改環境變數PATH,在PATH的值中新增%M2_HOME%\bin
驗證maven是否正常
C:\Users\Think>mvn -v
ApacheMaven3.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:OracleCorporation, 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/使用者名稱
後面的文章中我們就用~表示使用者目錄,這個地方不再說明。
執行下面命令,看一下效果
C:\Users\Think>mvn help:system
[INFO]Scanningfor projects...
Downloadingfrom central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom
Downloadedfrom 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)
Downloadingfrom central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom
Downloadedfrom central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom (12 kB at 21 kB/s)
Downloadingfrom 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
這個命令的執行過程:
- 執行
mvn help:system
之後- 系統會去環境變數PATH對應的所有目錄中尋找mvn命令,然後在
D:\installsoft\maven\apache-maven-3.6.2\bin
中找到了可執行的mvn
檔案- 執行mvn檔案,也就是執行mvn命令
- 通常一些軟體啟動的時候,會有一個啟動配置檔案,maven也有,mvn命令啟動的時候會去
~/.m2
目錄尋找配置檔案settings.xml
,這個檔案是mvn命令啟動配置檔案,可以對maven進行一些啟動設定(如本地外掛快取放在什麼位置等等),若~/.m2
目錄中找不到settings.xml
檔案,那麼會去M2_HOME/conf
目錄找這個配置檔案,然後執行maven程式- mvn命令後面跟了一個引數:
help:sytem
,這個是什麼意思呢?這個表示執行help
外掛,然後給help外掛傳送system
命令- maven檢視本地快取目錄(預設為
~/.m2
目錄)尋找是否有help外掛,如果本地沒有繼續下面的步驟- maven會去預設的一個站點(apache為maven提供的一個網站[repo.maven.apache.org],這個叫中央倉庫)下載help外掛到
~/.m2
目錄- 執行help外掛,然後給help外掛傳送
system
指令,help外掛收到system
指令之後,輸出了本地環境變數的資訊,如果系統找不到指定的外掛或者給外掛傳送無法識別的命令,都會報錯
上面這個過程大家再感受一下,maven中所有的命令都是以外掛的形式提供的,所以maven擴充套件也是相當容易的。
mvn 外掛名稱:help
上面這種會輸出外掛的幫助文件,來感受一下:
C:\Users\Think>mvn clean:help
[INFO]Scanningfor projects...
[INFO]
[INFO]------------------------------------------------------------------------
[INFO]BuildingMavenStubProject(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
MavenCleanPlugin
TheMavenCleanPluginis 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.Bydefault, 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]FinalMemory:15M/487M
[INFO]------------------------------------------------------------------------
這些後面還會詳細介紹。
Maven的一些配置
啟動檔案設定
上面提到了mvn
執行的時候,會載入啟動的配置檔案settings.xml
,這個檔案預設在M2_HOME/conf
目錄,一般我們會拷貝一個放在~/.m2
目錄中,前者是全域性範圍的配置檔案,整個機器上所有使用者都會受到該配置的影響,而後者是使用者範圍級別的,只有當前使用者才會受到該配置的影響。推薦使用使用者級別的,將其放在~/.m2
目錄,而不去使用全域性的配置,以免影響到其他使用者的使用。還有這樣使用方便日後maven版本升級,一般情況下maven整個安裝目錄我們都不要去動,升級的時候只需要替換一下安裝檔案就可以了,很方便。
配置本地快取目錄
settings.xml中有個localRepository
標籤,可以設定本地快取目錄,maven從遠端倉庫下載下來的外掛以及以後所有我們用到的jar包都會放在這個目錄中,如下:
<localRepository>C:/Users/Think/.m1/repository</localRepository>
總結
- 掌握maven的安裝過程
-
~
表示當前使用者目錄 - maven的配置檔案settings.xml一般我們放在
~/.m2
目錄中,方便maven的升級,避免影響其他使用者的配置 - 瞭解mvn命令的執行過程
來源:http://itsoku.com/course/2/63