Maven一些總結

 1.Maven的安裝和配置
  從Maven的官網上下載Maven的安裝包, http://maven.apache.org/download.html
  將其解壓在你想安放的目錄下。
  而後配置Maven的環境變量(M2_HOME),好比說個人Maven安裝在D:\Maven\apache-maven-3.0.3下,那麼M2_HOME=D:\Maven\apache-maven-3.0.3。若是想在任何目錄下使用maven命令,就將M2_HOME目錄下的bin目錄加入到加入到系統環境變量Path中。
  使用mvn -v 就能夠看到當前maven的版本信息,代表安裝成功。
  注:安裝maven前必須肯定本身的電腦已經安裝了JDK,而且java環境已經配置好了。
2.設置HTTP代理
  有些時候處於安全考慮,本身的主機不能直接訪問外網的中央倉庫,而是指定一個通過安全認證的代理服務器,經過該代理服務器來訪問中央倉庫。
  如何配置HTTP代理?
  首先在安裝了Maven後,M2_HOME/conf目錄下放置了Maven的配置信息(setting.xml),咱們能夠經過修改該文件來設置代理。可是,若是直接在該文件上修改,那麼影響將是全局的,並且不利於之後的升級。因此咱們將該文件複製一份,放到~/.m2下,那麼該文件將會覆蓋M2_HOME/conf下的setting.xml,並且只對當前用戶有效。這樣每一個用戶均可以根據本身的喜愛和需求來配置適合本身的Maven。具體如何在setting.xml中配置HTTP代理,代碼入下:
  <proxies>
       <proxy>
       <id>my-proxy</id>
       <active>true</active>
       <protocol>http</protocol>
       <host>...</host>
       <port>...</port>
       <useranme>...</useranme>
       <password>...</password>
       <nonProxyHosts>...</nonProxyHosts>
       </proxy>
  </proxies>
  <active>的值爲true,表示該代理被激活,<protocol>表示代理協議,固然是http了,<host>表示代理的主機地址,<port>表明代理主機的端口,<useranme>,<password>
  用來進行安全認證, <nonProxyHosts>表明哪些主機不須要進行代理。
  注:當在作項目使用Maven的時候,一定要下載不少jar包和插件放在本地的倉庫中,安裝好Mavaen後,本地倉庫會有一個默認的存放位置。固然也能夠經過配置setting.xml文件來改變。好比我本身的配置,將倉庫放在D:/dev/repository下:
  <localRepository>D:/dev/repository</localRepository>
3.pom文件編寫的一些細節
  ①在編寫pom文件的時候,相同的版本號或其餘一些字符串會重複出現,那麼咱們能夠將重複的字符串抽取出來,進行定義,而後在須要使用的地方進行引用。以下:
  <properties>
       <springframework.version>2.5.6</springframework.version>
  </properties>
  .....
  <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>${springframework.version}</version>
  </dependency>
  ....
4.聊聊Maven的倉庫機制
  咱們沒必要每作一個項目就將其所依賴的jar包和插件都引入到項目中,咱們能夠定義依賴,指定在倉庫中的位置。倉庫包含了不少的插件和jar包,分爲本地倉庫和遠程倉庫,當定義一個依賴的時候,系統會首先根據座標在本地倉庫中尋找jar包,若是本地倉庫中有所須要的jar包和插件,那麼就不會去訪問遠程倉庫,若是沒有就會去訪問遠程倉庫,而且把相應的jar包和插件下載到本地倉庫中去。
  注:安裝好Maven之後,若是不執行任何Maven命令,本地倉庫目錄是不存在的,當用戶輸入第一條Maven命令以後,Maven纔會建立本地倉庫。
  Maven安裝好後,會有一個默認的遠程倉庫,即中央倉庫,配置信息寫在Maven的超級POM文件中。固然除了中央倉庫,還能夠配置其餘遠程倉庫。即當在中央倉庫中找不到jar包的時候回去其餘遠程倉庫中尋找。配置代碼以下:
  <repositories>  
      <repository>  
        <id>public</id>  
        <releases>  
          <enabled>true</enabled>  
        </releases>  
        <snapshots>  
          <enabled>true</enabled>  
        </snapshots>  
      </repository>
      </repositories> 
 
 在組織內部,有一個Maven倉庫服務器,該服務器爲每一個項目都提供獨立的Maven倉庫,爲了防止非法的倉庫訪問,管理員爲每一個倉庫提供了一組用戶名和密碼。爲了能讓Maven訪問倉庫內容,就須要配置認證信息。配置代碼以下:
 <server>
      <id>releases</id>
      <username>deployment</username>
      <password>deployment123</password>
  </server>
  倉庫的鏡像
若是倉庫X能夠提供倉庫Y存儲的全部內容,那麼就能夠認爲X是Y的一個鏡像。換句話說,任何能夠從Y得到的構件,都能從它的鏡像中獲取。
<mirrors>
   <mirror>
      <id>mirrorId</id>
      <mirrorOf>central</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
    </mirror>
</mirrors>
上述代碼配置了一箇中央倉庫的鏡像倉庫mirrorId。其餘配置項與一個普通倉庫是相同的。
5.生命週期和插件
  在有關Maven的平常應用中,命令行的輸入每每就對用了生命週期,如mvn package就表示執行生命週期階段package。
  Maven有三套生命週期,clean,default,site.
  三套生命週期是相互獨立的,用戶能夠僅僅調用生命週期的某一個階段,而不會對其餘週期產生影響。

 

每一個生命週期包含一些階段,而且這些階段是有順序的,後面的階段依賴前面的階段。以clean生命週期爲例,它有三個階段,pre-clean,clean,post-clean。當用戶調用pre-clean的時候,只有pre-clean階段執行,當用戶調用clean的時候,那麼就會執行
pre-clean,clean這兩個階段。html

從命令行執行maven任務的主要方式就是調用maven的生命週期階段:
$mvn clean:該命令調用clean生命週期的clean階段。實際指向的階段爲clean生命週期的pre-clean和clean階段。
插件綁定:
Maven的生命週期與插件相互綁定,用以完成實際的構建任務。具體而言,是生命週期的階段與插件的目標相互綁定,以完成某個具體的構建任務。例如項目編譯這一項任務,它對應了default生命週期的compile階段,而maven-compiler-plugin這一插件的compile目標能完成該任務。所以,將他們綁定,就能實現項目編譯的目的。
內置綁定:爲了能讓用戶幾乎不用任何配置就能構建maven項目,maven在覈心爲一些主要的生命週期綁定了不少插件和目標,當用戶經過命令行調用生命週期階段的時候,對應的插件目標就會執行相應的任務。
自定義綁定:
<build>
<plugins>
<plugin>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<!--executions標籤內配置插件可在哪些階段運行-->
<executions>
<!--一個execution標籤表明一個具體的階段-->
<execution>
<id></id>
<!--phase標籤指明具體階段的名稱,若是沒有填寫這個標籤,那麼目標就會綁定到默認的生命週期階段-->
<phase></phase>
<goals>
<!--綁定在這個階段的具體的插件目標-->
<goal></goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
固然還能夠在插件的配置中添加<configuration>,用來配置插件的配置信息。(能夠全局配置插件,也能夠局部配置插件,就是根據configuration書寫的位置來判斷)
若是多個目標綁定到同一個生命週期階段,那麼多個目標執行的前後順序將是它們聲明的前後順序。java

相關文章
相關標籤/搜索