Maven起源:生產環境下開發再也不是一個項目一個工程,而是每個模塊建立一個工程, 而多個模塊整合在一塊兒就須要使用到像 Maven 這樣的構建工具。html
Maven定義:一個自動化構建工具java
Maven簡介:Maven是Apache軟件基金會組織維護的一款自動化構建工具,專一服務於Java平臺的項目構建和依賴管理。spring
構建:構建就是以咱們編寫的 Java 代碼、框架配置文件、 國際化等其餘資源文件、 JSP 頁apache
面和圖片等靜態資源做爲「原材料」, 去「生產」出一個能夠運行的項目的過程。oracle
Project Object Model:項目對象模型。將 Java 工程的相關信息封裝爲對象做爲便於操做和管理的模型。Maven 工程的核心配置。能夠說學習 Maven 就是學習 pom.xml 文件中的配置。框架
Maven 的座標
使用以下三個向量在 Maven 的倉庫中惟一的肯定一個 Maven 工程。
[1]groupid:公司或組織的域名倒序+當前項目名稱
[2]artifactId:當前項目的模塊名稱
[3]version:當前模塊的版本eclipse
<groupId>com.atguigu.maven</groupId> |
Maven 中最關鍵的部分, 咱們使用 Maven 最主要的就是使用它的依賴管理功能。maven
能夠近似理解爲jar包的import語句思想。ide
<dependency> |
座標的 scope 設置,是依賴的範圍。依賴的範圍有幾個可選值, 咱們用獲得的是: compile、 test、 provided 三個。
compile |
test |
provided |
|
主程序 |
√ |
× |
√ |
測試程序 |
√ |
√ |
√ |
參與部署 |
√ |
× |
× |
A 依賴 B, B 依賴 C, A 可否使用 C 呢? 那要看 B 依賴 C 的範圍是否是 compile, 若是是則可用, 不然不可用。
切斷依賴的傳遞性
<dependency> |
[1] 統一聲明版本號
<properties> |
[2] 引用前面聲明的版本號
<dependencies> </dependency> </dependencies> |
<dependencyManagement> </dependency> |
<dependencies> |
2.4.8聚合
將多個工程拆分爲模塊後, 須要手動逐個安裝到倉庫後依賴纔可以生效。 修改源碼後也須要逐個手動進行 clean 操做。 而使用了聚合以後就能夠批量進行 Maven 工程的安裝、清理工做。
方法:在總的聚合工程中使用 modules/module 標籤組合,指定模塊工程的相對路徑
<modules> |
本地倉庫:爲當前本機電腦上的全部 Maven 工程服務
遠程倉庫:私服、中央倉庫、中央倉庫鏡像
Maven 有三套相互獨立的生命週期, 分別是:
①Clean Lifecycle 在進行真正的構建以前進行一些清理工做。
②Default Lifecycle 構建的核心部分,編譯,測試,打包,安裝,部署等等。
③Site Lifecycle 生成項目報告,站點,發佈站點。
它們是相互獨立的,你能夠僅僅調用 clean 來清理工做目錄,僅僅調用 site 來生成站點。 固然你也能夠直接運行 mvn clean install site 運行全部這三套生命週期。運行任何一個階段的時候,它前面的全部階段都會被運行
Maven 的核心僅僅定義了抽象的生命週期,具體的任務都是交由插件完成的。
●每一個插件都能實現多個功能,每一個功能就是一個插件目標。
●Maven 的生命週期與插件目標相互綁定,以完成某個具體的構建任務。
例如:compile 就是插件 maven-compiler-plugin 的一個目標;
pre-clean 是插件 maven-clean-plugin 的一個目標。
尚硅谷Java視頻教程_Maven視頻:
https://www.bilibili.com/video/av36557763?p=1
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/