第二章 Maven的安裝和配置

###2.1 安裝Maven### ####2.1.1 檢查JDK安裝####   在安裝Maven以前,首先要確認你已經正確安裝了JDK。Maven能夠運行在JDK 1.4及以上的版本上。打開Windows的命令行,運行以下的命令來檢查你的Java安裝:
  echo %JAVA_HOME%
  java -version
  結果如圖所示:
  輸入圖片說明
  上述命令首先檢查環境變量JAVA_HOME是否指向了正確的JDK目錄,接着嘗試運行java命令。若是Windows沒法執行java命令,或者沒法找到JAVA_HOME環境變量。你就須要檢查Java是否安裝了,或者環境變量是否設置正確。 ####2.1.2 下載Maven####   請訪問Maven的下載頁面:Maven下載頁面,其中包含針對不一樣平臺的各類版本的Maven下載文件。如今最新的版本是apache-maven-3.3.3,若是對Maven的源代碼感興趣並想本身構建Maven,還能夠下載apache-maven-3.3.3-src.zip。該下載頁面還提供了md5校驗和(checksum)文件和asc數字簽名文件,能夠用來檢驗Maven分發包的正確性和安全性。 ####2.1.3 本地安裝Maven####   將安裝文件解壓到指定的目錄D:\TDDOWNLOAD\apache-maven-3.3.3中,接着須要設置環境變量,將Maven安裝配置到操做系統環境中。
  打開系統屬性面板(桌面上右鍵單擊「個人電腦」→「屬性」),點擊高級系統設置,再點擊環境變量,在系統變量中新建一個變量,變量名爲M2_HOME,變量值爲Maven的安裝目錄D:\TDDOWNLOAD\apache-maven-3.3.3。點擊肯定,接着在系統變量中找到一個名爲Path的變量,在變量值的末尾加上%M2_HOME%\bin;,注意多個值之間須要有分號隔開,而後點擊肯定。至此,環境變量設置完成。
  這裏須要提一下的是Path環境變量,當咱們在cmd中輸入命令時,Windows首先會在當前目錄中尋找可執行文件或腳本,若是沒有找到,Windows會接着遍歷環境變量Path中定義的路徑。因爲咱們將%M2_HOME%\bin添加到了Path中,而這裏%M2_HOME%其實是引用了咱們前面定義的另外一個變量,其值是Maven的安裝目錄。所以,Windows會在執行命令時搜索目錄D:\TDDOWNLOAD\apache-maven-3.3.3\bin,而mvn執行腳本的位置就是這裏。
  明白了環境變量的做用,如今打開一個新的cmd窗口(這裏強調新的窗口是由於新的環境變量配置須要新的cmd窗口才能生效),運行以下命令檢查Maven的安裝狀況:
  echo %M2_HOME%
  mvn-v
  運行結果如圖所示:
  輸入圖片說明   第一條命令echo %M2_HOME%用來檢查環境變量M2_HOME是否指向了正確的Maven安裝目錄;而mvn –version執行了第一條Maven命令,以檢查Windows是否可以找到正確的mvn執行腳本。 ####2.1.4 升級Maven####   Maven還比較年輕,更新比較頻繁,所以用戶每每會須要更新Maven安裝以得到更多更酷的新特性,以及避免一些舊的bug。
  在Windows上更新Maven很是簡便,只須要下載新的Maven安裝文件,解壓至本地目錄,而後更新M2_HOME環境變量即可。例如,假設Maven推出了新版本3.3.4,咱們將其下載而後解壓至目錄D:\TDDOWNLOAD\apache-maven-3.3.4,接着遵守前一節描述的步驟編輯環境變量M2_HOME,更改其值爲D:\TDDOWNLOAD\apache-maven-3.3.4。至此,更新就完成了。同理,若是你須要使用某一箇舊版本的Maven,也只須要編輯M2_HOME環境變量指向舊版本的安裝目錄。 ###2.2 安裝目錄分析### ####  2.2.1 M2_HOME####
  安裝以後的目錄以下:
  輸入圖片說明java

  • Bin: 該目錄包含了mvn運行的腳本,這些腳本用來配置Java命令,準備好classpath和相關的Java系統屬性,而後執行Java命令。其中mvn是基於UNIX平臺的shell腳本,mvn.bat是基於Windows平臺的bat腳本。在命令行輸入任何一條mvn命令時,實際上就是在調用這些腳本。該目錄還包含了mvnDebug和mvnDebug.bat兩個文件,一樣,前者是UNIX平臺的shell腳本,後者是windows的bat腳本。那麼mvn和mvnDebug有什麼區別和關係呢?打開文件咱們就能夠看到,二者基本是同樣的,只是mvnDebug多了一條MAVEN_DEBUG_OPTS配置,做用就是在運行Maven時開啓debug,以便調試Maven自己。此外,該目錄還包含m2.conf文件,這是classworlds的配置文件。
  • Boot: 該目錄只包含一個文件,以maven 3.3.3爲例,該文件爲plexus-classworlds-2.5.2.jar。plexus-classworlds是一個類加載器框架,相對於默認的java類加載器,它提供了更豐富的語法以方便配置,Maven使用該框架加載本身的類庫。更多關於classworlds的信息請參考http://classworlds.codehaus.org/ 。對於通常的Maven用戶來講,沒必要關心該文件。
  • Conf: 該目錄包含了一個很是重要的文件settings.xml。直接修改該文件,就能在機器上全局地定製Maven的行爲。通常狀況下,咱們更偏向於複製該文件至~/.m2/目錄下(這裏~表示用戶目錄),而後修改該文件,在用戶範圍定製Maven的行爲。後面將會屢次提到該settings.xml,並逐步分析其中的各個元素。
  • Lib: 該目錄包含了全部Maven運行時須要的Java類庫,Maven自己是分模塊開發的,所以用戶能看到諸如mavn-core-3.3.3.jar、maven-model-3.3.3.jar之類的文件,此外這裏還包含一些Maven用到的第三方依賴如common-cli-1.2.jar、google-collection-1.0.jar等等。(對於Maven 2來講,該目錄只包含一個如maven-2.2.1-uber.jar的文件本來各爲獨立JAR文件的Maven模塊和第三方類庫都被拆解後從新合併到了這個JAR文件中)。能夠說,這個lib目錄就是真正的Maven。關於該文件,還有一點值得一提的是,用戶能夠在這個目錄中找到Maven內置的超級POM。其餘: LICENSE.txt記錄了Maven使用的軟件許可證ApacheLicense Version 2.0; NOTICE.txt記錄了Maven包含的第三方軟件;而README.txt則包含了Maven的簡要介紹,包括安裝需求及如何安裝的簡要指令等等。 ####  2.2.2 ~/.m2####   先運行一條簡單的命令:mvn help:system。該命令會打印出全部的Java系統屬性和環境變量,這些信息對咱們平常的編程工做頗有幫助。這裏暫不解釋help:system涉及的語法,運行這條命令的目的是爲了讓Maven執行一個真正的任務。咱們能夠從命令行輸出看到Maven會下載maven-help-plugin,包括pom文件和jar文件。這些文件都被下載到了Maven本地倉庫中。
      如今打開用戶目錄C:\Users\Administrator。在用戶目錄下,能夠發現.m2文件夾。默認狀況下,該文件夾下放置了Maven本地倉庫.m2/repository。全部的Maven構件(artifact)都被存儲到該倉庫中,以方便重用。能夠到~/.m2/repository/org/apache/maven/plugins/maven-help-plugins/目錄下找到剛纔下載的maven-help-plugin的pom文件和jar文件。Maven根據一套規則來肯定任何一個構件在倉庫中的位置。因爲Maven倉庫是經過簡單文件系統透明地展現給Maven用戶的,有些時候能夠繞過Maven直接查看或修改倉庫文件,在遇到疑難問題時,這每每十分有用。
      默認狀況下,~/.m2目錄下除了repository倉庫以外就沒有其餘目錄和文件了,不過大多數Maven用戶須要複製M2_HOME/conf/settings.xml文件到~/.m2/settings.xml。 ###2.3 設置HTTP代理###   有時候公司因爲安全因素考慮,要求使用經過安全認證的代理訪問因特網。這種狀況下,就須要爲Maven配置HTTP代理,才能讓它正常訪問外部倉庫,如下載所須要的資源。
      首先確認本身沒法直接訪問公共的Maven中央倉庫,直接運行命令ping repo1.maven.org能夠檢查網絡。若是真的須要代理,先檢查一下代理服務器是否暢通,好比如今有一個IP地址爲218.14.227.197,端口爲3128的代理服務,能夠運行telnet 218.14.227.197 3128來檢測該地址的該端口是否暢通。若是獲得出錯信息,須要先獲取正確的代理服務信息;若是telnet鏈接正確,則輸入ctrl+],而後q,回車,退出便可。
      檢查完畢以後,編輯~/.m2/settings.xml文件(若是沒有該文件,則複製$M2_HOME/conf/settings.xml)。添加代理配置以下:
<settings>
…  
<proxies>
    <proxy>
      <id>my-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>218.14.227.197</host>
      <port>3128</port>
      <!--
      <username>***</username>
      <password>***</password>
      <nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
      -->
    </proxy>
  </proxies>
  …
</settings>

  這段配置十分簡單,proxies下能夠有多個proxy元素,若是聲明瞭多個proxy元素,則默認狀況下第一個被激活的proxy會生效。這裏聲明瞭一個id爲my-proxy的代理,active的值爲true表示激活該代理,protocol表示使用的代理協議,這裏是http。固然,最重要的是指定正確的主機名(host元素)和端口(port元素)。上述XML配置中註釋掉了username、password、nonProxyHost幾個元素,當代理服務須要認證時,就須要配置username和password。nonProxyHost元素用來指定哪些主機名不須要代理,可使用 | 符號來分隔多個主機名。此外,該配置也支持通配符,如*.google.com表示全部以google.com結尾的域名訪問都不要經過代理。 ###2.4 配置用戶範圍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文件。shell

相關文章
相關標籤/搜索