玩轉Maven之安裝與配置


至於爲什麼要寫Maven這個系列呢?其實我自己還是感慨頗深的,在去年一年的工作中,接觸了一幫出差過來支撐的兄弟,但是這幫兄弟也都是剛走出校門的,或者從其它行業轉過來做開發的,經驗都很少,基礎的Maven都不會配置,更不要說Maven的那些概念了。其實,在我們周圍很多的看似很厲害的“大牛”,他能和你侃侃而談,從人工智能到大數據,從大數據到區塊鏈等等,他們都能說出一二,但是一到落實的實處時,比如讓他們“show me your code”的時候,他們總是很痛苦的,或者是漏洞百出的。所以,這個系列一來爲需要補充Maven基礎知識的兄弟提供一個捷徑;二來總結一下自己Maven知識,以免像那些“大牛”一樣。

Windows上安裝Maven

首先我們需要知道的事情是Maven是依賴JDK的,所以不管是在Windows還是Linux,需要使用Maven,就必須要先安裝JDK。每個版本Maven對JDK的版本要去都不一致,我們可以去Maven的官網下載頁,可以看到Maven的安裝要求。

對於Windows的安裝來說,我們直接下載對應的安裝包即可。關於Windows上安裝Maven不是這篇文章的重點,我這裏也就一筆帶過,由於公衆號無法添加別的鏈接,請各位自行百度《Maven在Windows上的安裝與配置》。

Linux上安裝Maven

從Maven的官網下載安裝包以後,進行解壓。解壓後得到apache-maven-3.6.0這個包;然後執行ln -s apache-maven-3.6.0 maven命令創建一個軟鏈接,然後在系統環境變量PATH中添加以下環境變量:

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

檢查Maven是否安裝成功,只需要輸入mvn -v,如果輸出如下圖所示,就是安裝成功了。

肯定就有小夥伴會問了,爲什麼要創建一個軟鏈接。其實在Linux上安裝軟件包,我都有一個習慣,應該是我們整個公司也都是這樣要求的。安裝軟件包時,會在安裝目錄旁平行的創建一個符號鏈接,以方便將來升級;以後Maven升級時,只需要下載新版本的Maven包,解壓放在平行目錄,然後修改這個鏈接就可以了。

Maven安裝目錄分析

M2_HOME環境變量指向Maven的安裝目錄。我們可以看到Maven安裝目錄下有以下文件和文件夾:

  • conf:該目錄包含了一個非常重要的文件settings.xml。直接修改該文件,就能在機器上全局地定製Maven的行爲。而一般情況下,我們都會複製該文件至~/.m2目錄下,然後修改該文件,在用戶範圍定製Maven的行爲;

  • bin:該目錄包含了mvn運行的腳本,這些腳本用來配置Java命令,配置好classpath和相關的Java系統屬性,然後運行執行Java命令。該目錄除了包含Unix和Windows平臺運行的腳本外,還包含一個m2.conf文件,這是classworlds的配置文件,後續還會細說;

  • boot:該目錄下只有一個plexus-classworlds-2.5.2.jar文件,plexus-classworlds是一個類加載器框架,相對於默認的Java類加載器,它提供了個更豐富的語法以方便配置,Maven使用該框架加載自己的類庫;

  • lib:該目錄包含了所有Maven運行時需要的Java類庫,Maven是分模塊開發的,所以這裏有多個Jar包。

  • NOTICE:記錄了Maven包含的第三方軟件;

  • LICENSE:記錄了Maven使用的軟件許可證;

  • README.txt:記錄了Maven的簡要介紹,包含安裝需求及如何安裝的簡要命令等。

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日,於內蒙古呼和浩特。

書籍推薦


人生是個圓,有的人走了一輩子也沒有走出命運畫出的圓圈,其實,圓上的每一個點都有一條騰飛的切線。

玩代碼、玩技術

長按識別二維碼,關注“果凍想”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章