Maven是一個項目管理工具,它包含了一個項目對象模型(POM:Project Object Model),一組標準集合,一個項目生命周期(Project LifeCycle),一個依賴管理系統(Dependency managerment System),和用來運行定義在生命周期(phase)中插件(plugin)目標(goal)的邏輯。
①首先,maven是一個優秀的項目構建工具。使用maven,可以很方便的對項目進行分模塊構建,這樣在開發和測試打包部署時,效率會提高很多。
②其次,maven可以進行依賴的管理。使用maven,可以將不同系統的依賴進行統一管理,并且可以進行依賴之間的傳遞和繼承。
1)install 本地安裝, 包含編譯,打包,安裝到本地倉庫
2)clean 清除已編譯信息,刪除工程中的target目錄。
3)compile 只編譯。javac命令
4)deploy 部署。常見于結合私服使用的命令,相當于是install+上傳jar到私服。
5)package 打包。包含編譯,打包兩個功能。
在Maven中有三套相互獨立的生命周期,請注意這里說的是“三套”,而且“相互獨立”,這三套生命周期分別是:
(1)Clean清理項目: 在進行真正的構建之前進行一些清理工作。 mvn clean
(2)Default構建項目: 構建的核心部分,編譯,測試,打包,部署等等。 mvn compile test package install deploy
(3)Site生成項目站點: 生成項目報告,站點,發布站點。
Maven倉庫是基于簡單文件系統存儲的,集中化管理Java API資源(構件)的一個服務。倉庫中的任何一個構件都有其唯一的坐標,根據這個坐標可以定義其在倉庫中的唯一存儲路徑。得益于 Maven 的坐標機制,任何 Maven項目使用任何一個構件的方式都是完全相同的,Maven 可以在某個位置統一存儲所有的 Maven 項目共享的構件,這個統一的位置就是倉庫,項目構建完畢后生成的構件也可以安裝或者部署到倉庫中,供其它項目使用。
對于Maven來說,倉庫分為兩類:本地倉庫和遠程倉庫。
1)POM工程
POM工程是邏輯工程。用在父級工程或聚合工程中。用來做jar包的版本控制。
2)JAR工程
將會打包成jar用作jar包使用。即常見的本地工程 - Java Project。
3)WAR工程
將會打包成war,發布在服務器上的工程。如網站或服務。即常見的網絡工程 - Dynamic Web Project。war工程默認沒有WEB-INF目錄及web.xml配置文件,IDE通常會顯示工程錯誤,提供完整工程結構可以解決。
使用<dependency>的<exclusion>元素將會引起沖突的元素排除。
● 可能由于網絡波動,每有下載完成,又緩存了,這個時候下載多少次都會失敗,解決辦法就是去本地倉庫將對應的依賴全部刪除再重新下載
● 由于依賴傳遞帶來的版本沖突問題,解決辦法就是排除依賴。