Maven 入門(一) Maven使用

1.什麼是Maven

若是沒有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 項目的知識管理:管理項目相關的其餘內容,好比開發者信息,版本等等

2.Maven 如何管理Jar包

關於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>

3 Maven的生命週期與階段

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實戰》,這本書講述的很全面了。

相關文章
相關標籤/搜索