至於爲何要寫Maven這個系列呢?其實我本身仍是感慨頗深的,在去年一年的工做中,接觸了一幫出差過來支撐的兄弟,可是這幫兄弟也都是剛走出校門的,或者從其它行業轉過來作開發的,經驗都不多,基礎的Maven都不會配置,更不要說Maven的那些概念了。其實,在咱們周圍不少的看似很厲害的「大牛」,他能和你侃侃而談,從人工智能到大數據,從大數據到區塊鏈等等,他們都能說出一二,可是一到落實的實處時,好比讓他們「show me your code」的時候,他們老是很痛苦的,或者是漏洞百出的。因此,這個系列一來爲須要補充Maven基礎知識的兄弟提供一個捷徑;二來總結一下本身Maven知識,以避免像那些「大牛」同樣。html
首先咱們須要知道的事情是Maven是依賴JDK的,因此不論是在Windows仍是Linux,須要使用Maven,就必需要先安裝JDK。每一個版本Maven對JDK的版本要去都不一致,咱們能夠去Maven的官網下載頁,能夠看到Maven的安裝要求。apache
對於Windows的安裝來講,咱們直接下載對應的安裝包便可。關於Windows上安裝Maven不是這篇文章的重點,我這裏也就一筆帶過,推薦網上的一篇教程吧。具體的安裝步驟能夠看這篇《Maven在Windows上的安裝與配置》。框架
從Maven的官網下載安裝包之後,進行解壓。解壓後獲得apache-maven-3.6.0
這個包;而後執行ln -s apache-maven-3.6.0 maven
命令建立一個軟連接,而後在系統環境變量PATH中添加如下環境變量:maven
export M2_HOME=~/maven export PATH=$PATH:$M2_HOME/bin
檢查Maven是否安裝成功,只須要輸入mvn -v
,若是輸出以下圖所示,就是安裝成功了。工具
確定就有小夥伴會問了,爲何要建立一個軟連接。其實在Linux上安裝軟件包,我都有一個習慣,應該是咱們整個公司也都是這樣要求的。安裝軟件包時,會在安裝目錄旁平行的建立一個符號連接,以方便未來升級;之後Maven升級時,只須要下載新版本的Maven包,解壓放在平行目錄,而後修改這個連接就能夠了。區塊鏈
M2_HOME
環境變量指向Maven的安裝目錄。咱們能夠看到Maven安裝目錄下有如下文件和文件夾:大數據
conf
: 該目錄包含了一個很是重要的文件settings.xml
。直接修改該文件,就能在機器上全局地定製Maven的行爲。而通常狀況下,咱們都會複製該文件至~/.m2
目錄下,而後修改該文件,在用戶範圍定製Maven的行爲;人工智能
bin
:該目錄包含了mvn
運行的腳本,這些腳本用來配置Java命令,配置好classpath
和相關的Java系統屬性,而後運行執行Java命令。該目錄除了包含Unix和Windows平臺運行的腳本外,還包含一個m2.conf
文件,這是classworlds
的配置文件,後續還會細說;spa
boot
: 該目錄下只有一個plexus-classworlds-2.5.2.jar
文件,plexus-classworlds
是一個類加載器框架,相對於默認的Java類加載器,它提供了個更豐富的語法以方便配置,Maven使用該框架加載本身的類庫;code
lib
: 該目錄包含了全部Maven運行時須要的Java類庫,Maven是分模塊開發的,因此這裏有多個Jar包。
NOTICE
: 記錄了Maven包含的第三方軟件;
LICENSE
: 記錄了Maven使用的軟件許可證;
README.txt
: 記錄了Maven的簡要介紹,包含安裝需求及如何安裝的簡要命令等。
最佳實踐一:設置MAVEN_OPTS
環境變量 運行mvn命令其實是執行了Java命令,既然是運行Java,那麼運行Java命令可用的參數固然也應該在運行mvn命令時可用。
一般須要設置MAVEN_OPTS
的值爲-Xms128m -Xmx512m
,由於Java默認的最大可用內存每每不可以知足Maven運行的須要。咱們通常把MAVEN_OPTS
設置成環境變量。
最佳實踐二:配置用戶範圍settings.xml
Maven用戶能夠選擇配置M2_HOME/conf/settings.xml
或者~/.m2/settings.xml
。前者是全局範圍的,整個機器上的全部用戶都會直接受到該配置的影響,然後者是用戶範圍的,只有當前用戶纔會受到該配置的影響。
咱們在配置時,都是使用用戶範圍的settings.xml
,主要是爲了不無心識的修改影響到系統中其它用戶;若是有需求,須要統一系統中全部用戶的settings.xml
配置,這樣就能夠全局範圍的settings.xml
。
除了影響範圍這個因素,配置用戶範圍settings.xml
文件還便於Maven升級。直接修改conf目錄下的settings.xml
會致使Maven升級不便,每次升級到新版本的Maven,都須要複製settings.xml
文件。若是使用~/.m2
目錄下的settings.xml
,就不會影響到Maven安裝文件,升級時就不須要觸動settings.xml
文件。
這是一篇特別基礎的Maven安裝教程,對於Maven的入門有必定的幫助,但願你們能經過個人整個系列能夠入門Maven,豐富本身的工具庫。
2019年3月23日,於內蒙古呼和浩特。