Maven(一)Maven概述與安裝

前言

沒有接觸過Maven的人,可能會一臉蒙逼,它是個什麼東西?
我們就從問題中去發現它的價值,比如說:
假如你正在Eclipse下開發兩個Java項目,姑且把它們稱爲A、B,其中A項目中的一些功能依賴於B項目
中的某些類,那麼如何維繫這種依賴關係的呢?
 很簡單,這不就是跟我們之前寫程序時一樣嗎,需要用哪個項目中的哪些類,也就是用別人寫好了
的功能代碼,導入jar包即可。所以這裏也如此,可以將B項目打成jar包,然後在A項目的Library
下導入B的jar文件,這樣,A項目就可以調用B項目中的某些類了。
這樣做幾種缺陷:

  • 如果在開發過程中,發現B中的bug,則必須將B項目修改好,並重新將B打包並對A項目進行重編譯操作.
  • 在完成A項目的開發後,爲了保證A的正常運行,就需要依賴B(就像在使用某個jar包時必須依賴另外一
    個jar一樣),兩種解決方案,第一種,選擇將B打包入A中,第二種,將B也發佈出去,等別人需要用A時,
    告訴開發者,想要用A就必須在導入Bjar包。
  • 兩個都很麻煩,前者可能造成資源的浪費(比如,開發者可能正在開發依賴B的其它項目,B已經存儲到
    本地了,在導入A的jar包的話,就有了兩個B的jar),後者是我們常遇到的,找各種jar包,非常麻煩
    (有了maven就不一樣了).

再舉例說:

  • 我們開發一個項目,或者做一個小demo,比如用SSM框架,那麼我們就必須將SSM框架所用的幾十個依賴
    的jar包依次找出來並手動導入,超級繁瑣。

上面兩個問題的描述,其實都屬於項目與項目之間依賴的問題[A項目使用SSM的所有jar,就說A項目依賴
SSM],人爲手動的去解決,很繁瑣,也不方便,所以使用maven來幫我們管理。

一、Maven概述

1.1 Maven簡介

Maven可以翻譯爲“知識的積累”、“專家”、“內行”。作爲Apache組織中的一個頗爲成功的開源項目,Maven
主要**服務於基於Java平臺的項目構建、依賴管理、和項目信息管理。**Maven在各類項目中都可以大顯身手。

  • Maven是優秀的構建工具
    除了編寫源代碼,我們每天有相當一部分時間花在了編譯,運行單元測試,生成文檔,打包
    部署等繁瑣且不起眼的工作上,這就是構建。Maven就是一個異常強大的構建工具,能夠幫
    我們自動化構建過程,從清理,編譯,測試,到生成報告,再到打包和部署

  • Maven還是依賴管理工具和項目信息管理工具
     1)Maven通過一組座標能夠找到任何一個Java類庫(如jar),Maven給這個類庫世界引入了經緯,
    讓它們變得有秩序,於是我們可以藉助它來有序地管理依賴,輕鬆地解決那些繁雜的依賴問題。
     2)Maven還能幫助我們管理原本分散在項目中各個角落的項目信息,包括項目描述,開發者列表,
    版本控制系統地址,許可證,缺陷管理系統地址等。除了直接的項目信息,通過Maven自動生成的站點,
    以及一些已有的插件,我們還能輕鬆地獲得項目文檔、測試報告、靜態分析報告、源碼版本日誌報告等
    非常具有價值的項目信息。

  • 倉庫
    Maven爲全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何流行開源類庫。
    通過Maven的一些衍生工具(如Nexus),我們還能對其進行快速地搜索。只要定位了座標,Maven就
    能夠幫我們自動下載,省去了手工勞動。

1.2 理解Maven

  • 如果沒明白maven是什麼,那個人覺得,Maven的核心功能便是合理敘述項目間的依賴關係
    通俗點講,就是通過pom.xml文件的配置獲取jar包,而不用手動去添加jar包,而這裏pom.xml
    文件對於學了一點maven的人來說,就有些熟悉了。

  • 怎麼通過pom.xml的配置就可以獲取到jar包呢?pom.xml配置文件從何而來?等等類似問題我們
    需要搞清楚,如果需要使用pom.xml來獲取jar包,那麼首先該項目就必須爲maven項目。

  • maven項目可以這樣去想,就是在java項目和web項目的上面包裹了一層maven,本質上java項目
    還是java項目,web項目還是web項目,但是包裹了maven之後,就可以使用maven提供的一些功能
    了(通過pom.xml添加jar包)。

  • 所以,根據上一段的描述,我們最終的目的就是學會如何在pom.xml中配置獲取到我們想要的
    jar包,在此之前我們就必須瞭解如何創建maven項目,maven項目的結構是怎樣,與普通java,
    web項目的區別在哪裏,還有如何配置pom.xml獲取到對應的jar包等等。

1.3 項目的構建與依賴管理

  • 項目構建過程
    【清理項目】→【編譯項目】→【測試項目】→【生成測試報告】→【打包項目】→【部署項目】
    這六個步驟就是一個項目的完整構建過程。

  • 依賴管理
    1)依賴
     jar包之間的相互依賴,比如我們搭建一個Struts2的開發框架時,光光有struts2-core-2.3.16.3.jar
    這個jar包是不行的,struts2-core-2.3.16.3.jar還依賴其它的jar包。
    2)依賴管理
     依賴管理指的就是使用Maven來管理項目中使用到的jar包,Maven管理的方式就是“自動下載項目所需要的
    jar包,統一管理jar包之間的依賴關係”。

1.4 Maven的優點

  • Maven中使用約定,約定java源代碼代碼必須放在哪個目錄下,編譯好的java代碼又必須放到哪個
    目錄下,這些目錄都有明確的約定。
  • Maven的每一個動作都擁有一個生命週期,例如執行 mvn install 就可以自動執行編譯,測試,打包等
    構建過程。
    只需要定義一個pom.xml,然後把源碼放到默認的目錄,Maven幫我們處理其他事情。
  • 只需要定義一個pom.xml,然後把源碼放到默認的目錄,Maven幫我們處理其他事情。
  • 使用Maven可以進行項目高度自動化構建,依賴管理(這是使用Maven最大的好處),倉庫管理

1.5 Maven目標

Maven主要目標是提供開發人員:

  • 項目是可重複使用,易維護,更容易理解的一個綜合模型。
  • 插件或交互的工具,這種聲明性的模式

Maven項目的結構和內容是在一個XML文件中聲明,pom.xml的項目對象模型(POM),
這是整個Maven系統的基本單元。 

二、Maven安裝(Windows)

2.1 Maven下載

下載鏈接:http://maven.apache.org/download.cgi

下載完成後,得到一個壓縮包解壓,可以看到maven的組成目錄:

目錄介紹:

  • bin:含有mvn運行的腳本
  • boot:含有plexus-classworlds類加載器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven運行時所需要的java類庫
  • LICENSE.txt, NOTICE.txt, README.txt針對Maven版本,第三方軟件等簡要介紹

2.2 Maven的安裝

  • 首先你要確保你的電腦已經安裝了jdk1.6版本以上的,並配置好了JDK的環境變量。
  • 對apache-maven-3.3.9-bin.zip進行解壓縮,例如解壓到如下目錄(解壓目錄最好不要有中文)
  • 第三步:配置環境變量
  • 設置環境變量path,將%M2_HOME%\bin加入到path中,一定要注意使用分號;隔開。
  • 驗證是否配置成功:打開cmd命令——>輸入:mvn-v

三、Maven安裝(CentOS7)

  • 下載安裝文件
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
  • 解壓安裝
tar -zxvf apache-maven-3.3.9-bin.tar.gz 
mv apache-maven-3.3.9 maven (這一步驟可省略,主要是爲了後面方便操作)
  • 配置環境變量
    1)使用vim編輯/etc/profile文件
vim /etc/profile

2)在/etc/profile文件末尾增加以下配置:

M2_HOME=/opt/tyrone/maven (注意這裏是maven的安裝路徑)
export PATH=${M2_HOME}/bin:${PATH}

3)重載/etc/profile文件

source /etc/profile
  • 檢驗maven是否安裝成功
mvn -v 

四、Maven倉庫

通過pom.xml中的配置,就能夠獲取到想要的jar包(還沒講解如何配置先需要了解一下
倉庫的概念),但是這些jar是在哪裏呢?就是我們從哪裏獲取到的這些jar包?答案就是
倉庫(用來統一存儲所有Maven共享構建的位置)。

倉庫分爲:本地倉庫、第三方倉庫(私服)、中央倉庫

4.1 本地倉庫

Maven會將工程中依賴的構件(Jar包)從遠程下載到本機一個目錄下管理,
每個電腦默認的倉庫是在 $user.home/.m2/repository下.

我的就是在:C:\Users\Shinelon.m2\repository
一般我們會修改本地倉庫位置,自己創建一個文件夾,在從網上下載一個擁有相對完整的
所有jar包的結合,都丟到本地倉庫中,然後每次寫項目,直接從本地倉庫裏拿就行了。

這裏面的jar包相對的完整,很多都是我們需要的。

修改本地倉庫位置:在$MAVEN_HOME/conf/setting.xml文件中修改

編輯:

1)E:\AStudySoftwere\mavenrepository:就是我們自己創建的本地倉庫,
將網上下載的所有jar包,jar包默認的下載存儲位置,我們就可以直接通過
maven的pom.xml文件直接拿。
2)把jar包下載到本地的好處就是,當編譯時,會優先從本地的jar包去找,
如果本地存在,就直接拿來用,如果不存在,就從Maven的中心倉庫去下載。

42. 第三方倉庫(私服)

第三方倉庫,又稱爲內部中心倉庫,也稱爲私服(一種特殊的遠程倉庫,它是架設在局域網內的倉庫)
私服:一般是由公司自己設立的,只爲本公司內部共享使用。它既可以作爲公司內部構件協作和
存檔,也可作爲公用類庫鏡像緩存,減少在外部訪問和下載的頻率。(使用私服爲了減少對中央倉庫
的訪問私服可以使用的是局域網,中央倉庫必須使用外網(一般公司都會創建這種第三方倉庫,保證
項目開發時,項目所需用的jar都從該倉庫中拿,每個人的版本就都一樣。)

注意:連接私服,需要單獨配置。如果沒有配置私服,默認不使用

4.3 中央倉庫

Maven內置了遠程公用倉庫:http://repo1.maven.org/maven2
這個公共倉庫是由Maven自己維護,裏面有大量的常用類庫,幷包含了世界上大部分流行的
開源項目構件。目前是以java爲主工程依賴的jar包如果本地倉庫沒有,默認從中央倉庫下載。

五、Maven獲取Jar包過程

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