maven詳解3
本文轉:http://blog.csdn.net/u010425776/article/details/52027706
什麼是Maven?
如今我們構建一個專案需要用到很多第三方的類庫,如寫一個使用spring的Web專案就需要引入大量的jar包。一個專案Jar包的數量之多往往讓我們瞠目結舌,並且Jar包之間的關係錯綜複雜,一個Jar包往往又會引用其他Jar包,缺少任何一個Jar包都會導致專案編譯失敗。
以往開發專案時,程式設計師往往需要花較多的精力在引用Jar包搭建專案環境上,而這一項工作尤為艱難,少一個Jar包、多一個Jar包往往會報一些讓人摸不著頭腦的異常。
而Maven就是一款幫助程式設計師構建專案的工具,我們只需要告訴Maven需要哪些Jar 包,它會幫助我們下載所有的Jar,極大提升開發效率。
安裝Maven 和 Maven的Eclipse外掛
Maven規定的目錄結構
若要使用Maven,那麼專案的目錄結構必須符合Maven的規範,其目錄結構如下:
Maven基本命令
-
-v:查詢Maven版本
本命令用於檢查maven是否安裝成功。
Maven安裝完成之後,在命令列輸入mvn -v,若出現maven資訊,則說明安裝成功。 -
compile:編譯
將Java原始檔編譯成class檔案 -
package:打包
將專案打成jar包 -
clean:刪除target資料夾
-
install:安裝
將當前專案放到Maven的本地倉庫中。供其他專案使用
什麼是Maven倉庫?
Maven倉庫用來存放Maven管理的所有Jar包。分為:本地倉庫 和 中央倉庫。
- 本地倉庫
Maven本地的Jar包倉庫。 - 中央倉庫
Maven官方提供的遠端倉庫。
當專案編譯時,Maven首先從本地倉庫中尋找專案所需的Jar包,若本地倉庫沒有,再到Maven的中央倉庫下載所需Jar包。
什麼是“座標”?
在Maven中,座標是Jar包的唯一標識,Maven通過座標在倉庫中找到專案所需的Jar包。
如下程式碼中,groupId和artifactId構成了一個Jar包的座標。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- groupId:所需Jar包的專案名
- artifactId:所需Jar包的模組名
- version:所需Jar包的版本號
傳遞依賴 與 排除依賴
- 傳遞依賴:如果我們的專案引用了一個Jar包,而該Jar包又引用了其他Jar包,那麼在預設情況下專案編譯時,Maven會把直接引用和簡潔引用的Jar包都下載到本地。
- 排除依賴:如果我們只想下載直接引用的Jar包,那麼需要在pom.xml中做如下配置:(將需要排除的Jar包的座標寫在中)
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
依賴衝突
若專案中多個Jar同時引用了相同的Jar時,會產生依賴衝突,但Maven採用了兩種避免衝突的策略,因此在Maven中是不存在依賴衝突的。
- 短路優先
- 1
- 2
- 1
- 2
若本專案引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,並且C.jar也引用了X.jar。
在此時,Maven只會引用引用路徑最短的Jar。
- 宣告優先
若引用路徑長度相同時,在pom.xml中誰先被宣告,就使用誰。
聚合
-
什麼是聚合?
將多個專案同時執行就稱為聚合。 -
如何實現聚合?
只需在pom中作如下配置即可實現聚合:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
繼承
-
什麼是繼承?
在聚合多個專案時,如果這些被聚合的專案中需要引入相同的Jar,那麼可以將這些Jar寫入父pom中,各個子專案繼承該pom即可。 -
如何實現繼承?
- 父pom配置:將需要繼承的Jar包的座標放入標籤即可。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 子pom配置:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
使用Maven構建Web專案
-
New Maven專案:選擇WebApp:
-
若使用JSP,需新增Servlet依賴:
注:Servlet依賴只在編譯和測試時使用!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
在Bulid Path中設定resource輸出目錄:
-
勾選:Dynamic Web Module
-
刪掉測試目錄
-
在pom中加入jetty的外掛,並設定JDK版本:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
-
執行專案:
-
輸入:jetty:run
-
訪問127.0.0.1:8080
若出現如下介面,表示成功!
pom.xml詳解
pom.xml是Maven的核心,你的專案需要什麼Jar包就在pom.xml裡面配置。當編譯專案時Maven讀取該檔案,並從倉庫中下載相應的Jar包。