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的時候,那麼就會執行 從命令行執行maven任務的主要方式就是調用maven的生命週期階段: |