- A+
Maven 是 Apache 軟件基金會的一個開源項(xiàng)目,是一個優(yōu)秀的項(xiàng)目構(gòu)建工具,它用來幫助開發(fā)者管理項(xiàng)目中的 jar,以及 jar 之間的依賴關(guān)系、完成項(xiàng)目的編譯、測試、打包和發(fā)布等工作。
Mavende優(yōu)點(diǎn)
1、原來的項(xiàng)目中需要的jar包必須手動“復(fù)制”、”粘貼” 到WEB-INF/lib 項(xiàng)目下,而借Maven,可以將jar包僅僅保存在“倉庫”中,有需要使用的工程只需要“引用”這個文件,并不需要重復(fù)復(fù)制到工程中。
2、原來的項(xiàng)目中所需要的jar包都是提前下載好的,而Maven在聯(lián)網(wǎng)狀態(tài)下會自動下載所需要的jar包。首先在本地倉庫中找,找不到就在網(wǎng)上進(jìn)行下載。
3、原來的項(xiàng)目中一個jar包所依賴的其他jar包必須手動導(dǎo)進(jìn)來,而Maven會自動將被依賴的jar包導(dǎo)進(jìn)來。
4、原來的項(xiàng)目一個項(xiàng)目就是一個工程,而借助Maven可以將一個項(xiàng)目拆分成多個工程。
環(huán)境搭建&安裝 下載maven服務(wù)器,
1、maven 官網(wǎng)
2、點(diǎn)擊Download下載版本,如下圖:

3、將下載好的文件進(jìn)行解壓。
環(huán)境的配置
注意點(diǎn):Mac系統(tǒng)環(huán)境變量配置文件支持多個,這里僅以 ~/.bash_profile 為例。JDK 必須是1.7以上。
|
1
|
open ~/.bash_profile |
需要將 maven 添加到系統(tǒng)環(huán)境變量里:

|
1
2
3
|
#mavenexport MAVEN_HOME=/maven根路徑export PATH=$MAVEN_HOME/bin:$PATH |
讓系統(tǒng)環(huán)境變量強(qiáng)制生效,在命令行終端輸入一下命令:
|
1
|
source ~/.bash_profile |
差看maven 是否配置生效,在命令行終端輸入一下命令:
|
1
|
mvn -version |

配置maven本地倉庫
需要在 maven 文件中找到 conf 文件夾下的 settings.xml 文件進(jìn)行修改,如下圖:

為了提高下載速度需要配置阿里云倉庫,如下圖:

|
1
2
3
4
5
6
7
|
<!-- 配置阿里云鏡像倉庫 --><mirror>??<id>alimaven</id>??<name>aliyun maven</name>??<url>http://maven.aliyun.com/nexus/content/groups/public/</url>??<mirrorOf>central</mirrorOf></mirror> |
在idea中配置maven,如下圖:

maven工程的創(chuàng)建
創(chuàng)建一個新的工程new Project,如下圖:

創(chuàng)建好的工程,如下圖:

七、maven工程pom.xml配置
進(jìn)入maven?倉庫官網(wǎng),如下圖:

搜索自己想要的jar包,如下圖:

進(jìn)入到j(luò)ar詳情

進(jìn)入jar版本詳情:

在 Pom.xml 文件配置 jar 包信息(坐標(biāo)),使用 maven 自動下載 jar 包到本地倉庫中,如下圖:

下載好的jar,如下圖:

Maven 坐標(biāo)
Maven 坐標(biāo)一套規(guī)則,它規(guī)定:世界上任何一個構(gòu)件都可以使用 Maven 坐標(biāo)并作為其唯一標(biāo)識,Maven 坐標(biāo)包括 groupId、artifactId、version、packaging 等元素,只要用戶提供了正確的坐標(biāo)元素,Maven 就能找到對應(yīng)的構(gòu)件。
任何一個構(gòu)件都必須明確定義自己的坐標(biāo),這是 Maven 的強(qiáng)制要求,任何構(gòu)件都不能例外。我們在開發(fā) Maven 項(xiàng)目時,也需要為其定義合適的坐標(biāo),只有定義了坐標(biāo),其他項(xiàng)目才能引用該項(xiàng)目生成的構(gòu)件。
Maven 坐標(biāo)主要由以下元素組成:
- groupId: 項(xiàng)目組 ID,定義當(dāng)前 Maven 項(xiàng)目隸屬的組織或公司,通常是唯一的。它的取值一般是項(xiàng)目所屬公司或組織的網(wǎng)址或 URL 的反寫,例如 con.xiaoqiang.www。
- artifactId: 項(xiàng)目 ID,通常是項(xiàng)目的名稱。
- version:版本。
- packaging:項(xiàng)目的打包方式,默認(rèn)值為 jar。
以上 4 個元素中 groupId、artifactId 和 version 是必須定義的,packaging 是可選的。
Maven 倉庫
Maven 倉庫可以分為 2 個大類:
- 本地倉庫
- 遠(yuǎn)程倉庫
當(dāng) Maven 根據(jù)坐標(biāo)尋找構(gòu)件時,它會首先查看本地倉庫,若本地倉庫存在此構(gòu)件,則直接使用;若本地倉庫不存在此構(gòu)件,Maven 就會去遠(yuǎn)程倉庫查找,若發(fā)現(xiàn)所需的構(gòu)件后,則下載到本地倉庫使用。如果本地倉庫和遠(yuǎn)程倉庫都沒有所需的構(gòu)件,則 Maven 就會報錯。

Maven POM
POM(Project Object Model,項(xiàng)目對象模型)是 Maven 的基本組件,它是以 xml 文件的形式存放在項(xiàng)目的根目錄下,名稱為 pom.xml。
POM 中定義了項(xiàng)目的基本信息,用于描述項(xiàng)目如何構(gòu)建、聲明項(xiàng)目依賴等等。
當(dāng) Maven 執(zhí)行一個任務(wù)時,它會先查找當(dāng)前項(xiàng)目的 POM 文件,讀取所需的配置信息,然后執(zhí)行任務(wù)。在 POM 中可以設(shè)置如下配置:
- 項(xiàng)目依賴
- 插件
- 目標(biāo)
- 構(gòu)建時的配置文件
- 版本
- 開發(fā)者
- 郵件列表
在創(chuàng)建 POM 之前,首先要確定工程組(groupId),及其名稱(artifactId)和版本,在倉庫中這些屬性是項(xiàng)目的唯一標(biāo)識。一旦在 pom.xml 文件中配置了所依賴的 jar,Maven 會自動從構(gòu)件倉庫中下載相應(yīng)的構(gòu)件。

