若是沒有Maven,你可能不得不經歷下面的過程:spring
1 若是使用了spring,去spring的官網下載jar包;若是使用hibernate,去hibernate的官網下載Jar包;若是使用Log4j,去log4j的官網下載jar包.....緩存
2 當某些jar包有依賴的時候,還要去下載對應的依賴jar包安全
3 當jar包依賴有衝突時,不得不一個一個的排查maven
4 執行構建時,須要使用ant寫出不少重複的任務代碼post
5 當新人加入開發時,須要拷貝大量的jar包,而後重複進行構建測試
6 當進行測試時,須要一個一個的運行....檢查網站
有了Maven,它提供了三種功能:ui
1 依賴的管理:僅僅經過jar包的幾個屬性,就能肯定惟一的jar包,在指定的文件pom.xml中,只要寫入這些依賴屬性,就會自動下載並管理jar包。url
2 項目的構建:內置不少的插件與生命週期,支持多種任務,好比校驗、編譯、測試、打包、部署、發佈...spa
3 項目的知識管理:管理項目相關的其餘內容,好比開發者信息,版本等等
關於jar包的座標,有過使用經驗的都應該有所瞭解,maven是經過groupId,artifactId,以及version肯定一個惟一的jar包。
例如,最常使用的Junit的聲明就是以下:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> 這是聲明的範圍,不一樣的生命週期所要求的範圍是不同的,詳情參考《Maven實戰》 </dependency>
首先先來講說Maven下載jar包的過程:
在Maven中會涉及到幾種倉庫:
1 工做空間,即咱們的項目工程,這裏面可能會放着pom.xml文件,這個pom.xml就是maven的配置文件
2 本地倉庫,本地倉庫用於存放jar包,其實Jar包並非直接放入工做空間的,它是存放在本地倉庫,而後在執行發佈打包的時候,添加依賴路徑
3 私庫:私庫是使用者本身搭建的maven倉庫,用於緩解頻繁從外網下載jar包資源的壓力。並且使用私庫做爲緩存層,也相對安全一些。
4 共享倉庫:書中所說的中央倉庫或者一些經常使用的鏡像網站都屬於這種,國內比較著名的oschina以及163都是不錯的maven倉庫。
當咱們在pom中聲明瞭依賴關係後,參考上面的圖:
1 Maven在執行相關的任務時,會先去本地倉庫查看是否有該資源,若是有的話,判斷版本是否正確,若是一切都沒問題則直接使用;不然,執行下一步
2 Maven會去配置的共享倉庫中查找,若是找到就拷貝到本地倉庫中;找不到則會給出相關的提示
3 Maven在本地若是搭建了私庫,則會去私庫中查找,找到就拷貝到本地倉庫;找不到就會去共享倉庫中查找,而後放入私庫和本地庫。有了私庫,局域網內的開發者能夠共享依賴,就不用每一個人都去外網下載jar包,浪費帶寬了。
關於本地倉庫和共享倉庫的配置都在settings.xml中,這個文件位於conf中,若是沒有則拷貝一份便可。
settings.xml的部分配置文件以下:
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>SlaveName</name>
<url>http://search.maven.org</url>
</mirror>
<localRepository>D:/.m2/repository</localRepository>
Maven中有三大生命週期,他們相互獨立,分別是:
1 clean 清理
2 default 構建
3 site 建站
通常來講,clean和default比較經常使用。
每一個生命週期又有不一樣的階段,階段按順序執行,而且能夠指定執行結束的階段。構建的時候,會依次從最上面的階段執行到指定的那個階段。
好比,clean有3個階段:
1 pre-clean 執行清理前要完成的工做 2 clean 清理上一次構建生成的文件 3 post-clean 執行清理後須要完成的工做
當咱們輸入mvn clean的時候,執行的是pre-clean和clean兩個階段。
看名字大概就能理解,當執行mvn install的時候,實際會執行validate-->initialize-->...-->verify-->install等二十幾個階段。
爲了操做方便,不一樣的聲明週期能夠在一塊兒執行,好比mvn clean install,會先執行clean的階段,在執行install的階段。
在IDE開發環境中,當咱們Run as的時候,就能夠執行maven clean進行清理,或者執行maven install進行構建,也能夠執行maven build同時執行clean和install兩個任務。
基本上了解上面兩個知識點,就足夠平常工做使用了。固然Maven可不止這麼一點點的東西,好比它還涉及到自定義構建任務、間接依賴的管理、插件的使用、私庫的搭建等等,若是須要的話,讀者能夠參考《Maven實戰》,這本書講述的很全面了。