1. 程式人生 > 其它 >MAVEN專題之二、安裝、配置、mvn執行過程詳解

MAVEN專題之二、安裝、配置、mvn執行過程詳解

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目錄中,如下:

  1. [root@ady01 jdk]# cd /opt/jdk/
  2. [root@ady01 jdk]# ll
  3. total 181300
  4. -rw-r--r--1 root root 185646832Nov113:30 jdk-8u181-linux-x64.tar.gz

解壓jdk

  1. [root@ady01 jdk]# tar -zvxf jdk-8u181-linux-x64.tar.gz
  2. [root@ady01 jdk]# ll
  3. total 181304
  4. drwxr-xr-x 7101434096Jul72018 jdk1.8.0_181
  5. -rw-r--r--1 root root 185646832Nov113:
    30 jdk-8u181-linux-x64.tar.gz

配置環境變數

在/etc/profile檔案末尾追加下面幾行

  1. export JAVA_HOME=/opt/jdk/jdk1.8.0_181
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

這個地方擴充套件個知識點:

有個知識點我們說一下,系統執行java或者其他外部命令的時候,系統是如何找到這些命令的?

linux中會去PATH對應的所有目錄中尋找這個命令,找到了就可以直接執行,如果沒有設定PATH,我們需要知道命令的完整路徑才可以執行,所以使用PATH更方便一些。

window中,也有個系統變數PATH,這個PATH的值是由很多目錄的地址組成的,當我們執行一個命令的時候,系統會去PATH對應的所有目錄中尋找我們執行的命令,找到了就可以直接執行,比如你們想快速啟動其他的一些軟體,可以將這些軟體的設定到PATH變數中,可以在cmd命令中快速啟動了。

執行下面命令使環境變數生效

  1. [root@ady01 jdk1.8.0_181]# source /etc/profile

驗證jdk是否正常

檢視jdk版本

  1. [root@ady01 jdk]# java -version
  2. java version "1.8.0_181"
  3. Java(TM) SE RuntimeEnvironment(build 1.8.0_181-b13)
  4. JavaHotSpot(TM)64-BitServer VM (build 25.181-b13, mixed mode)

新建/opt/jdk/HelloWorld.java,內容如下:

  1. publicclassHelloWorld{
  2. publicstaticvoid main(String[] args){
  3. System.out.println("hello maven!");
  4. }
  5. }

執行下面的命令:

  1. [root@ady01 jdk]# cd /opt/jdk/
  2. [root@ady01 jdk]# javac HelloWorld.java
  3. [root@ady01 jdk]# java HelloWorld
  4. hello maven

恭喜,輸出hello maven表示正常,jdk安裝成功!

安裝maven

下載maven

咱們到maven官網中下載最新的maven,地址如下:

  1. https://maven.apache.org/download.cgi

最新的版本是apache-maven-3.6.2,linux中我們需要下載apache-maven-3.6.2-bin.tar.gz這個。

  1. [root@ady01 jdk]# mkdir /opt/maven
  2. [root@ady01 jdk]# cd /opt/maven/
  3. [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
  4. --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
  5. Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)...101.6.8.193,2402:f000:1:408:8100::1
  6. Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... connected.
  7. HTTP request sent, awaiting response...200 OK
  8. Length:9142315(8.7M)[application/octet-stream]
  9. Saving to:apache-maven-3.6.2-bin.tar.gz
  10. 100%[==================================================================================================================================>]9,142,31510.2MB/s in0.9s
  11. 2019-11-0113:47:13(10.2 MB/s)-apache-maven-3.6.2-bin.tar.gz saved [9142315/9142315]
  12. [root@ady01 maven]# ls
  13. apache-maven-3.6.2-bin.tar.gz

上面我們建立了/opt/maven目錄用來存放maven相關軟體,然後使用到wget命令,這個是linux中的一個命令,可以訪問一個http地址,將其下載到當前目錄。

解壓maven

  1. [root@ady01 maven]# tar -zvxf apache-maven-3.6.2-bin.tar.gz
  2. [root@ady01 maven]# ls
  3. apache-maven-3.6.2 apache-maven-3.6.2-bin.tar.gz

maven目錄結構

  1. [root@ady01 maven]# ll /opt/maven/maven/
  2. total 40
  3. drwxr-xr-x 2 root root 4096Nov113:49 bin
  4. drwxr-xr-x 2 root root 4096Nov113:49 boot
  5. drwxrwxr-x 3 mysql mysql 4096Aug2723:01 conf
  6. drwxrwxr-x 4 mysql mysql 4096Nov113:49 lib
  7. -rw-rw-r--1 mysql mysql 12846Aug2723:09 LICENSE
  8. -rw-rw-r--1 mysql mysql 182Aug2723:09 NOTICE
  9. -rw-rw-r--1 mysql mysql 2533Aug2723:01 README.txt
  1. bin:存放可以執行的檔案
  2. conf:存放maven的配置檔案
  3. lib:maven是java編寫的,裡面會用到很多第三方的jar包,這些jar包位於lib中

建立一個軟連線指向apache-maven-3.6.2目錄

  1. [root@ady01 maven]# ln -s apache-maven-3.6.2 maven
  2. [root@ady01 maven]# ll
  3. total 8936
  4. drwxr-xr-x 6 root root 4096Nov113:49 apache-maven-3.6.2
  5. -rw-r--r--1 root root 9142315Sep305:43 apache-maven-3.6.2-bin.tar.gz
  6. 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檔案末尾追加下面幾行

  1. export M2_HOME=/opt/maven/maven
  2. export PATH=$M2_HOME/bin:$PATH

執行下面的命令讓環境變數生效

  1. [root@ady01 maven]# source /etc/profile

驗證maven是否正常

  1. [root@ady01 maven]# mvn -v
  2. ApacheMaven3.6.2(40f52333136460af0dc0d7232c0dc0bcf0d9e117;2019-08-27T23:06:16+08:00)
  3. Maven home:/opt/maven/maven
  4. Java version:1.8.0_181, vendor:OracleCorporation, runtime:/opt/jdk/jdk1.8.0_181/jre
  5. Default locale: en_US, platform encoding: UTF-8
  6. 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,如下:

  1. C:\Users\Think>java -version
  2. java version "1.8.0_121"
  3. Java(TM) SE RuntimeEnvironment(build 1.8.0_121-b13)
  4. JavaHotSpot(TM)64-BitServer VM (build 25.121-b13, mixed mode)

新建D:/HelloWorld.java,檔案編碼格式為utf-8,內容如下:

  1. publicclassHelloWorld{
  2. publicstaticvoid main(String[] args){
  3. System.out.println("hello maven!");
  4. }
  5. }

執行下面的命令:

  1. C:\Users\Think>D:
  2. D:\>javac -encoding utf-8HelloWorld.java
  3. D:\>java HelloWorld
  4. hello maven

恭喜,輸出hello maven表示正常,jdk安裝成功!

安裝maven

下載maven3.6.2

  1. 下載地址: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,值為:

  1. D:\installsoft\maven\apache-maven-3.6.2

修改環境變數PATH,在PATH的值中新增%M2_HOME%\bin

驗證maven是否正常

  1. C:\Users\Think>mvn -v
  2. ApacheMaven3.6.2(40f52333136460af0dc0d7232c0dc0bcf0d9e117;2019-08-27T23:06:16+08:00)
  3. Maven home: D:\installsoft\maven\apache-maven-3.6.2\bin\..
  4. Java version:1.8.0_121, vendor:OracleCorporation, runtime: D:\installsoft\Java\jdk1.8.0_121\jre
  5. Default locale: zh_CN, platform encoding: GBK
  6. OS name:"windows 10", version:"10.0", arch:"amd64", family:"windows"

mvn -v輸出maven的版本號資訊,若輸出和上面類似,那麼恭喜你,maven安裝成功!

Maven的執行原理詳解

本文後面會用到~這個符號,先對這個符號做一下說明,這個符號表示當前使用者的目錄

window中預設在C:\Users\使用者名稱

linux root使用者預設在/root目錄,其他使用者的~對應/home/使用者名稱

後面的文章中我們就用~表示使用者目錄,這個地方不再說明。

執行下面命令,看一下效果

  1. C:\Users\Think>mvn help:system
  2. [INFO]Scanningfor projects...
  3. Downloadingfrom central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom
  4. 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)
  5. Downloadingfrom central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom
  6. 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)
  7. 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這個命令的執行過程:

  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

上面這種會輸出外掛的幫助文件,來感受一下:

  1. C:\Users\Think>mvn clean:help
  2. [INFO]Scanningfor projects...
  3. [INFO]
  4. [INFO]------------------------------------------------------------------------
  5. [INFO]BuildingMavenStubProject(No POM)1
  6. [INFO]------------------------------------------------------------------------
  7. [INFO]
  8. [INFO]--- maven-clean-plugin:2.5:help (default-cli)@ standalone-pom ---
  9. [INFO] org.apache.maven.plugins:maven-clean-plugin:2.5
  10. MavenCleanPlugin
  11. TheMavenCleanPluginis a plugin that removes files generated at build-time
  12. in a project's directory.
  13. This plugin has 2 goals:
  14. clean:clean
  15. Goal which cleans the build.
  16. This attempts to clean a project's working directory of the files that were
  17. generated at build-time.Bydefault, it discovers and deletes the directories
  18. configured in project.build.directory, project.build.outputDirectory,
  19. project.build.testOutputDirectory,and project.reporting.outputDirectory.
  20. Files outside the default may also be included in the deletion by configuring
  21. the filesets tag.
  22. clean:help
  23. Display help information on maven-clean-plugin.
  24. Call
  25. mvn clean:help -Ddetail=true-Dgoal=<goal-name>
  26. to display parameter details.
  27. [INFO]------------------------------------------------------------------------
  28. [INFO] BUILD SUCCESS
  29. [INFO]------------------------------------------------------------------------
  30. [INFO]Total time:0.372 s
  31. [INFO]Finished at:2019-11-01T17:59:04+08:00
  32. [INFO]FinalMemory:15M/487M
  33. [INFO]------------------------------------------------------------------------

這些後面還會詳細介紹。

Maven的一些配置

啟動檔案設定

上面提到了mvn執行的時候,會載入啟動的配置檔案settings.xml,這個檔案預設在M2_HOME/conf目錄,一般我們會拷貝一個放在~/.m2目錄中,前者是全域性範圍的配置檔案,整個機器上所有使用者都會受到該配置的影響,而後者是使用者範圍級別的,只有當前使用者才會受到該配置的影響。推薦使用使用者級別的,將其放在~/.m2目錄,而不去使用全域性的配置,以免影響到其他使用者的使用。還有這樣使用方便日後maven版本升級,一般情況下maven整個安裝目錄我們都不要去動,升級的時候只需要替換一下安裝檔案就可以了,很方便。

配置本地快取目錄

settings.xml中有個localRepository標籤,可以設定本地快取目錄,maven從遠端倉庫下載下來的外掛以及以後所有我們用到的jar包都會放在這個目錄中,如下:

  1. <localRepository>C:/Users/Think/.m1/repository</localRepository>

總結

  1. 掌握maven的安裝過程
  2. ~表示當前使用者目錄
  3. maven的配置檔案settings.xml一般我們放在~/.m2目錄中,方便maven的升級,避免影響其他使用者的配置
  4. 瞭解mvn命令的執行過程

來源:http://itsoku.com/course/2/63