如果沒有Maven,你可能不得不經曆下面的過程:
1 如果使用了spring,去spring的官網下載下傳jar包;如果使用hibernate,去hibernate的官網下載下傳Jar包;如果使用Log4j,去log4j的官網下載下傳jar包.....
2 當某些jar包有依賴的時候,還要去下載下傳對應的依賴jar包
3 當jar包依賴有沖突時,不得不一個一個的排查
4 執行建構時,需要使用ant寫出很多重複的任務代碼
5 當新人加入開發時,需要拷貝大量的jar包,然後重複進行建構
6 當進行測試時,需要一個一個的運作....檢查
有了Maven,它提供了三種功能:
1 依賴的管理:僅僅通過jar包的幾個屬性,就能确定唯一的jar包,在指定的檔案pom.xml中,隻要寫入這些依賴屬性,就會自動下載下傳并管理jar包。
2 項目的建構:内置很多的插件與生命周期,支援多種任務,比如校驗、編譯、測試、打包、部署、釋出...
3 項目的知識管理:管理項目相關的其他内容,比如開發者資訊,版本等等
關于jar包的坐标,有過使用經驗的都應該有所了解,maven是通過groupId,artifactId,以及version确定一個唯一的jar包。
例如,最常使用的Junit的聲明就是如下:
首先先來說說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中,如果沒有則拷貝一份即可。
其中本地倉庫的配置為:
預設是在 使用者的本地目錄/.m2/repository中。
共享倉庫的位址配置為:
Maven中有三大生命周期,他們互相獨立,分别是:
1 clean 清理
2 default 建構
3 site 建站
一般來說,clean和default比較常用。
每個生命周期又有不同的階段,階段按順序執行,并且可以指定執行結束的階段。建構的時候,會依次從最上面的階段執行到指定的那個階段。
比如,clean有3個階段:
當我們輸入mvn clean的時候,執行的是pre-clean和clean兩個階段。
default的階段比較多:
看名字大概就能了解,當執行mvn install的時候,實際會執行validate-->initialize-->...-->verify-->install等二十幾個階段。
為了操作友善,不同的聲明周期可以在一起執行,比如mvn clean install,會先執行clean的階段,在執行install的階段。
在IDE開發環境中,當我們Run as的時候,就可以執行maven clean進行清理,或者執行maven install進行建構,也可以執行maven build同時執行clean和install兩個任務。
基本上了解上面兩個知識點,就足夠日常工作使用了。當然Maven可不止這麼一點點的東西,比如它還涉及到自定義建構任務、間接依賴的管理、插件的使用、私庫的搭建等等,如果需要的話,讀者可以參考《Maven實戰》,這本書講述的很全面了。 本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/p/6364811.html,如需轉載請自行聯系原作者