項目構(gòu)建:清理、編譯、測試、生成文檔、打包、部署
依賴管理:坐標(biāo)系統(tǒng)
項目信息管理:項目描述、開發(fā)者列表、版本控制系統(tǒng)地址、許可證、缺陷管理系統(tǒng)地址
一、setting.xml的位置? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
安裝的地方:${M2_HOME}/conf/settings.xml
用戶的目錄:${user.home}/.m2/settings.xml
前者又被叫做全局配置,對操作系統(tǒng)的所有使用者生效;后者被稱為用戶配置,只對當(dāng)前操作系統(tǒng)的使用者生效。如果兩者都存在,它們的內(nèi)容將被合并,并且用戶范圍的settings.xml會覆蓋全局的settings.xml。
二、POM(Project Object Model)
1、
project:pom.xml的根元素。
modelVersion:指定當(dāng)前POM模型的版本;目前是4.0.0。
2、項目坐標(biāo)
groupId:定義當(dāng)前maven隸屬的實際項目。
artifactId:定義實際項目中的一個模塊。推薦的做法是使用實際項目名稱作為artifactId的前綴。在默認(rèn)情況下maven生成的構(gòu)建,其文件名以artifactID為開頭。
version:當(dāng)前項目的版本。
packaging:該maven項目的打包方式。默認(rèn)值jar。
classifier:幫助定義構(gòu)建輸出的一些附屬構(gòu)建(doc、sources)。不能直接定義項目的classifier,因為附屬構(gòu)建不是項目直接默認(rèn)生成的,而是由附加的插件幫助生成的。
項目構(gòu)建的文件名:artifactId-version-[classifier].packaging。
三、依賴的配置
根元素project下的dependencies可以包含一個或多個dependency,以聲明一個或多個項目依賴。每個依賴可包含的元素有:
groupId,artifactId,version :依賴的基本坐標(biāo)。
type:依賴的類型。對應(yīng)項目坐標(biāo)定義的packaging。
scope:依賴的范圍。
?compile:編譯依賴范圍。默認(rèn)。編譯、測試、運(yùn)行三種classpath都有效。
?test:只對測試classpath有效。
?provided:已提供依賴范圍。編譯和測試classpath有效,運(yùn)行時無效。
?runtime:運(yùn)行時依賴范圍。測試和運(yùn)行classpath有效,編譯主代碼時無效。
?system:系統(tǒng)依賴范圍。與provided一致,必須通過systemPath元素顯示的指定依賴文件路徑。
? ? import:導(dǎo)入依賴范圍。

?傳遞性依賴和依賴范圍:

?依賴調(diào)解:1、路徑最近者優(yōu)先;2、第一聲明者優(yōu)先。
optional:標(biāo)記依賴是否可選。
?可選依賴不被傳遞。需要顯示聲明。
exclusions:用來排除傳遞性依賴。
歸類依賴
properties 元素 定義 Maven 屬性, 該 例 中 定義 了 一個 springframework. version 子 元素, 其 值 為 2. 5. 6。 有了 這個 屬性 定義 之后, Maven 運(yùn)行 的 時候 會 將 POM 中的 所有 的 ${ springframework. version} 替換 成 實際 值 2. 5. 6。 也就是說, 可以 使用 美元 符號 和 大括弧 環(huán)繞 的 方式 引用 Maven 屬性。 然后, 將 所有 Spring Framework 依賴 的 版 本值 用 這一 屬性 引用 表示。
四、倉庫?
得益于坐標(biāo)機(jī)制,任何maven項目使用任何maven構(gòu)件的方式都是相同的。maven可以在某個位置統(tǒng)一存儲所有maven項目的共享構(gòu)件,這個統(tǒng)一位置就是倉庫。
倉庫的布局:任何一個構(gòu)件都有其唯一坐標(biāo),根據(jù)這個坐標(biāo)可以定義其在倉庫中的唯一存儲路徑。該 路徑 與 坐標(biāo) 的 大致 對應(yīng) 關(guān)系 為 groupId/ artifactId/ version/ artifactId- version. packaging。
倉庫的分類:

? ? 1、本地倉庫
? ? 2、遠(yuǎn)程倉庫
? ? 3、中央倉庫:$MAVEN_HOME$/lib/maven-model-builder-3.5.2.jar\org\apache\maven\model\

? ? 4、私服
? ? 遠(yuǎn)程倉庫的配置:

對于 releases 和 snapshots 來說, 除了 enabled, 它們 還 包含 另外 兩個 子 元素 updatePolicy 和 checksumPolicy:

元素 updatePolicy 用來 配置 Maven 從 遠(yuǎn)程 倉庫 檢查 更新 的 頻率, 默認(rèn) 的 值 是 daily, 表示 Maven 每天 檢查 一次。 其他 可 用的 值 包括: never— 從不 檢查 更新; always— 每次 構(gòu)建 都 檢查 更新; interval: X— 每隔 X 分鐘 檢查 一次 更新( X 為 任意 整數(shù))。
元素 checksumPolicy 用來 配置 Maven 檢查 檢驗 和 文件 的 策略。 當(dāng) 構(gòu)件 被 部署 到 Maven 倉庫 中 時, 會同 時 部署 對應(yīng) 的 校驗 和 文件。 在下 載 構(gòu)件 的 時候, Maven 會 驗證 校驗 和 文件, 如果 校驗 和 驗證 失敗, 怎么辦? 當(dāng) checksumPolicy 的 值 為 默認(rèn) 的 warn 時, Maven 會在 執(zhí)行 構(gòu)建 時 輸出 警告 信息, 其他 可 用的 值 包括: fail— Maven 遇到 校驗 和 錯誤 就讓 構(gòu)建 失??; ignore— 使 Maven 完全 忽略 校驗 和 錯誤。
遠(yuǎn)程倉庫的認(rèn)證:setting.xml中配置倉庫認(rèn)證信息

?settings. xml 中 server 元素 的 id 必須 與 POM 中 需要 認(rèn)證 的 repository 元素 的id 完全 一致。 換句話說, 正是 這個 id 將 認(rèn)證 信息 與 倉庫 配置 聯(lián) 系在 了 一起。
部署至遠(yuǎn)程倉庫:mav clean deploy

快照版本:
鏡像:

生命周期:
包括項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署、站點生成
生命周期抽象了構(gòu)建的各個步驟,定義了它們的次序
每個構(gòu)建步驟可以綁定一個或者多個插件行為。maven為大多數(shù)構(gòu)建綁定了默認(rèn)插件。用戶 可以 通過 配置 現(xiàn)有 插件 或者 自行 編寫 插件 來自 定義 構(gòu)建 行為。
maven擁有三套相互獨立的生命周期,clean、default、site
每個生命周期包含一些階段,這些階段是有順序的,后邊的階段依賴于前邊的階段。每個生命周期都是相互獨立的。
clean:清理項目。
? ? 1、pre-clean 執(zhí)行一些清理前需要完成的工作
? ? 2、clean 清理上一次構(gòu)建生成的文件
? ? 3、post-clean 執(zhí)行一些清理后需要完成的工作

default:構(gòu)建項目。

site:建立項目站點。

自定義綁定:選擇將某個插件目標(biāo)綁定到生命周期的某個階段

?通過 phase 元素 配置 生命 周期 階段,再通過 goals 配置 指定 要 執(zhí)行 的 插件 目標(biāo)。
命令行插件配置:在 Maven 命令 中 使用- D 參數(shù), 并 伴隨 一個 參數(shù) 鍵= 參 數(shù)值 的 形式, 來 配置 插件 目標(biāo) 的 參數(shù)。
插件解析機(jī)制:
聚合:把項目的各個模塊聚合到一起構(gòu)建。
? ??對于 聚合 模塊 來說, 其 打包 方式 packaging 的 值 必須 為 pom, 否則 就 無法 構(gòu)建。用戶 可以 通過 在 一個 打包 方式 為 pom 的 Maven 項目 中 聲明 任意 數(shù)量 的 module 元素 來 實現(xiàn) 模塊 的 聚合。這里每個module值是當(dāng)前pom的相對目錄。
聚合模塊有平行結(jié)構(gòu)和父子目錄結(jié)構(gòu)。
繼承:幫助抽取各個模塊相同的依賴和插件等配置。
? ? 打包類型為pom,子模塊繼承父模塊,子模塊中元素 relativePath 表示 父 模塊 POM 的 相對 路徑,當(dāng) 項目 構(gòu)建 時, Maven 會首 先 根據(jù) relativePath 檢查 父 POM, 如果 找 不到, 再 從 本地 倉庫 查找。
依賴管理:Maven 提供 的 dependencyManagement 元素 既能 讓 子 模塊 繼承 到 父 模塊 的 依賴 配置, 又能 保證 子 模塊 依賴 使用 的 靈活性。 在 dependencyManagement 元素 下 的 依賴 聲明 不會 引入 實際 的 依賴, 不過 它 能夠 約束 dependencies 下 的 依賴 使用。
插件管理:pluginManagement