什么是Maven
Maven 是一個項目管理工具,它包含了一個項目對象模、型 (pom: Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。
maven能做什么
1,省去jar包的導入,而是坐標來進行導入,減少了項目的內(nèi)存大小
2,更加方便的構(gòu)建項目,實現(xiàn)項目的一鍵構(gòu)建。指的是項目從編譯、測試、運行、打包、安裝 ,部署整個過程都交給 maven 進行管理,這個過程稱為構(gòu)建
Maven 倉庫的分類
maven 的工作需要從倉庫下載一些 jar 包,如下圖所示,本地的項目 A、項目 B 等都會通過 maven軟件從遠程倉庫(可以理解為互聯(lián)網(wǎng)上的倉庫)下載 jar 包并存在本地倉庫,本地倉庫 就是本地文件夾,當?shù)诙涡枰?jar 包時則不再從遠程倉庫下載,因為本地倉庫已經(jīng)存在了,可以將本地倉庫理解為緩存,有了本地倉庫就不用每次從遠程倉庫下載了。
下圖描述了 maven 中倉庫的類型:
本地倉庫 :用來存儲從遠程倉庫或中央倉庫下載的插件和 jar 包,項目使用一些插件或 jar 包,優(yōu)先從本地倉庫查找默認本地倉庫位置在${user.dir}/.m2/repository, ${user.dir}表示 windows 用戶目錄
遠程倉庫:如果本地需要插件或者 jar 包,本地倉庫沒有, 默認去遠程倉庫下載。遠程倉庫可以在互聯(lián)網(wǎng)內(nèi)也可以在局域網(wǎng)內(nèi)。
中央倉庫 :在 maven 軟件中內(nèi)置一個遠程倉庫地址http://repo1.maven.org/maven2 ,它是中央倉庫,服務于整個互聯(lián)網(wǎng),它是由 Maven 團隊自己維護,里面存儲了非常全的 jar 包,它包含了世界上大部分流行的開源項目構(gòu)件。
maven 的概念模型
Maven 包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(ProjectLifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。
? 項目對象模型 (Project Object Model)
一個 maven 工程都有一個 pom.xml 文件,通過 pom.xml 文件定義項目的坐標、項目依賴、項目信息、
插件目標等。
? 依賴管理系統(tǒng)(Dependency Management System)
通過 maven 的依賴管理對項目所依賴的 jar 包進行統(tǒng)一管理。
比如:項目依賴 junit4.9,通過在 pom.xml 中定義 junit4.9 的依賴即使用 junit4.9,如下所示是 junit4.9的依賴定義:
? 一個項目生命周期(Project Lifecycle)
使用 maven 完成項目的構(gòu)建,項目構(gòu)建包括:清理、編譯、測試、部署等過程, maven 將這些
過程規(guī)范為一個生命周期,如下所示是生命周期的各各階段:
常用的 maven 命令
compile:編譯
clean:清理
test:測試
package:打包
install:安裝
坐標定義
在 pom.xml 中定義坐標,內(nèi)容包括: groupId、 artifactId、 version,詳細內(nèi)容如下:
<!–項目名稱,定義為組織名 項目名,類似包名–>
<groupId>cn.itcast.maven</groupId>
<!– 模塊名稱 –>
<artifactId>maven-first</artifactId>
<!– 當前項目版本號, snapshot 為快照版本即非正式版本, release 為正式發(fā)布版本 –>
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包類型
jar:執(zhí)行 package 會打成 jar 包
war:執(zhí)行 package 會打成 war 包
pom :用于 maven 工程的繼承,通常父工程設置為 pom
pom 基本配置
pom.xml 是 Maven 項目的核心配置文件,位于每個工程的根目錄,基本配置如下:
<project > :文件的根節(jié)點 .
<modelversion > : pom.xml 使用的對象模型版本
<groupId > : 項目名稱,一般寫項目的域名
<artifactId > : 模塊名稱,子項目名或模塊名稱
<version > :產(chǎn)品的版本號 .
<packaging > :打包類型,一般有 jar、 war、 pom 等
<name > :項目的顯示名,常用于 Maven 生成的文檔。
<description > :項目描述,常用于 Maven 生成的文檔
<dependencies> :項目依賴構(gòu)件配置,配置項目依賴構(gòu)件的坐標
<build> :項目構(gòu)建配置,配置編譯、運行插件等。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。