1. Maven綜述與拓展概念準備 Maven起源:生產環境下開發不再是一個項目一個工程,而是每一個模塊創建一個工程, 而多個模塊整合在一起就需要使用到像 Maven 這樣的構建工具。 Maven定義:一個自動化構建工具 Maven簡介:Maven是Apache軟體基金會組織維護的一款自動化構建工具 ...
1. Maven綜述與拓展概念準備
Maven起源:生產環境下開發不再是一個項目一個工程,而是每一個模塊創建一個工程, 而多個模塊整合在一起就需要使用到像 Maven 這樣的構建工具。
Maven定義:一個自動化構建工具
Maven簡介:Maven是Apache軟體基金會組織維護的一款自動化構建工具,專註服務於Java平臺的項目構建和依賴管理。
構建:構建就是以我們編寫的 Java 代碼、框架配置文件、 國際化等其他資源文件、 JSP 頁
面和圖片等靜態資源作為“原材料”, 去“生產”出一個可以運行的項目的過程。
2. Maven核心概念
2.1 POM
Project Object Model:項目對象模型。將 Java 工程的相關信息封裝為對象作為便於操作和管理的模型。Maven 工程的核心配置。可以說學習 Maven 就是學習 pom.xml 文件中的配置。
2.2約定的目錄結構
2.3坐標
Maven 的坐標
使用如下三個向量在 Maven 的倉庫中唯一的確定一個 Maven 工程。
[1]groupid:公司或組織的功能變數名稱倒序+當前項目名稱
[2]artifactId:當前項目的模塊名稱
[3]version:當前模塊的版本
<groupId>com.atguigu.maven</groupId> |
2.4依賴管理
2.4.1依賴概念與配置
Maven 中最關鍵的部分, 我們使用 Maven 最主要的就是使用它的依賴管理功能。
可以近似理解為jar包的import語句思想。
<dependency> |
2.4.2依賴的範圍
坐標的 scope 設置,是依賴的範圍。依賴的範圍有幾個可選值, 我們用得到的是: compile、 test、 provided 三個。
compile |
test |
provided |
|
主程式 |
√ |
× |
√ |
測試程式 |
√ |
√ |
√ |
參與部署 |
√ |
× |
× |
2.4.3依賴的傳遞性
A 依賴 B, B 依賴 C, A 能否使用 C 呢? 那要看 B 依賴 C 的範圍是不是 compile, 如果是則可用, 否則不可用。
2.4.4依賴的排除
切斷依賴的傳遞性
<dependency> |
2.4.5統一管理所依賴的jar包版本
[1] 統一聲明版本號
<properties> |
[2] 引用前面聲明的版本號
<dependencies> </dependency> </dependencies> |
2.4.6依賴的原則
- 最短路徑優先
- 相同路徑先聲明優先
- 父工程配置
2.4.7在父工程中管理依賴
<dependencyManagement> </dependency> |
- 子工程配置
<dependencies> |
2.4.8聚合
將多個工程拆分為模塊後, 需要手動逐個安裝到倉庫後依賴才能夠生效。 修改源碼後也需要逐個手動進行 clean 操作。 而使用了聚合之後就可以批量進行 Maven 工程的安裝、清理工作。
方法:在總的聚合工程中使用 modules/module 標簽組合,指定模塊工程的相對路徑
<modules> |
2.5倉庫管理
本地倉庫:為當前本機電腦上的所有 Maven 工程服務
遠程倉庫:私服、中央倉庫、中央倉庫鏡像
2.6生命周期
Maven 有三套相互獨立的生命周期, 分別是:
①Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
②Default Lifecycle 構建的核心部分,編譯,測試,打包,安裝,部署等等。
③Site Lifecycle 生成項目報告,站點,發佈站點。
它們是相互獨立的,你可以僅僅調用 clean 來清理工作目錄,僅僅調用 site 來生成站點。 當然你也可以直接運行 mvn clean install site 運行所有這三套生命周期。運行任何一個階段的時候,它前面的所有階段都會被運行
2.7插件和目標
Maven 的核心僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的。
●每個插件都能實現多個功能,每個功能就是一個插件目標。
●Maven 的生命周期與插件目標相互綁定,以完成某個具體的構建任務。
例如:compile 就是插件 maven-compiler-plugin 的一個目標;
pre-clean 是插件 maven-clean-plugin 的一個目標。
3. 資料與工具準備
3.1資料
尚矽谷Java視頻教程_Maven視頻:
https://www.bilibili.com/video/av36557763?p=1
3.2工具
MVNrepository(Jar包依賴信息搜索):
EclipseEE:
https://www.eclipse.org/downloads/packages/
JDK:
https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
Maven:http://maven.apache.org/