一、下載和安裝mavenjava
注:在使用以前,應首先安裝JDK。apache
#能夠去共用目錄中下載,下載完後解壓到指定的目錄中,如C:\Program Files\apache-maven-2.2.0緩存
#配置環境變量:1)MAVEN_HOME: 你安裝的Maven的目錄,如C:\Program Files\apache-maven-2.2.0服務器
#在Path 中加入%MAVEN_HOME%\binapp
配置完以後,在命令窗口中使用mvn –version 會出現以下信息eclipse
此時,maven已經安裝配置好了。maven
二、使用maven來構建項目,從源代碼編譯成二進制項目文件ide
用maven對項目打包,好比用svn下載項目從svn
svn://10.0.0.58:8000/java/materias/poc/maven/core/,下載到指定的目錄,好比放在E:\workspace\java\materias\poc\maven\core目錄下工具
項目的結構以下:
包括src源代碼目錄,unit test源碼目錄,以及配置文件目錄resources
打開命令窗口,用cd命令轉到項目所在的目錄下
運行mvn compile,假以下現以下的結果,則該命令運行成功。
該命令是用來編譯全部的的(java)源文件,編譯後生成全部的class文件放在根目錄下的target\classes目錄下,即如
除此以外,maven還有不少其餘經常使用的命令方式,好比:
*mvn test-compile //編譯測試代碼 ,好比編譯test下的源文件,編譯後生成的全部的class文件放在根目錄下的target\test-classes目錄下
*mvn test //運行應用程序中的單元測試,好比對以上的項目,測試生成的結果放在根目錄下的target\surefire-reports目錄下,
*mvn clean //清除目標目錄中的生成結果 delete target,即會清除生成的target目錄
*mvn package //依據項目生成 jar或者war/sar文件,好比對以上的項目,生成的包文件會放在根目錄下的target\目錄下的core-1.0.jar文件,這裏要注意的是運行了mvn package命令之後,對於這以前的操做(包括mvn compile,mvn test-compile,mvn test)命令,都會自動運行
*mvn install // 在本地 Repository 中安裝 jar或者war //,即將生成的jar或者war放在本地的Repository中,這裏要說明的是,maven中默認的Repository是在C:\Documents and Settings\(當前系統用戶的名稱)\.m2\repository目錄下,咱們也能夠人爲的將它存放在指定的目錄下,步驟是打開maven的安裝目錄,打開conf\下的settings.xml文件,修改其中的<localRepository>,好比將其修改成 中間就是所要指定的目錄,如對以上的項目,執行了mvn install項目後,不只在根目錄下生成target\目錄,同時還會將生成的jar文件存放到Repository中,即E:/app/m2/repository中
*mvn site //生成項目相關信息的網站
mvn eclipse:eclipse //生成Eclipse 項目文件及包引用定義,注意,需確保定義Classpath Variables: M2_REPO,指向本地maven類庫目錄。執行完了後,就能夠將源碼項目導入elipse。
mvn eclipse:clean //清除Eclipse 項目文件及包引用定義文件。
若是想要跳過測試,則加上-Dmaven.test.skip=true參數,如:mvn install -Dmaven.test.skip=true。
三、mvn的運行簡單機制
經過pom.xml來進行構建。 好比Pom.Xml以上項目中的pom.xml文件
<modelVersion> --描述這個POM文件聽從哪一個版本的項目描述符;
<groupId> -- 針對一個項目的普賢遍惟一識別符。一般用一個徹底正確的包的名字來與其餘項目的相似名字來進行區分;好比以上的項目,生成的(java)源文件會放在根目錄下的\target\classes\com\sunvalley\demo中,\com\sunvalley\demo即是這裏<groupId>所惟一標識的;
<artifactId> -- 項目的通用名稱
<packaging> -- 打包擴展名(JAR、WAR、EAR),舉個例子jar,war,pom Plugings可以建立他們本身的包,包括包的類型;好比以上的項目生成的core-1.0.jar文件
<name> -- 當前項目的全稱;
<version> --當前項目產生的artifact的當前版本;
<description> -- 當前項目的一個細節描述;
除此以外還有一些其它的元素,如<dependencies>
<dependencies>這個元素描述了全部與當前項目相關的依賴。
<dependencies>
<dependency> 能夠配置多個相關的依賴
<groupId>activation</groupId> 所依賴組件的標識符
<version>1.0.1</version> 所依賴組件的版本
<properties> 所依賴組件的屬性
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
</dependencies>
好比以上項目中的
這是在以上項目中進行unit test所要用到的一個工具junit。groupId是該組件的標識符,artifactId表示該組件的通用名稱,version表示該組件的版本,scope:用於限制相應的依賴範圍,還有其餘的幾種範圍如
compaile :默認範圍,用於編譯
runtime:在執行時,須要使用
test:用於test任務時使用
此外在<dependencies>中能夠配置多個<dependency>,即多個組件的配置
四、Maven-proxy的使用
#maven-proxy的做用
maven-proxy是你訪問maven倉庫(repository)的代理,它能夠鏈接多個maven倉庫,但對你來講,你只須要知道maven-proxy就夠了。
更重要的是,maven-proxy能夠看做是maven倉庫在你本地的緩存,這在團隊開發的時候會節省下載jar包的時間。好比,你的團隊有10我的,默認的狀況下maven repository的服務器爲http://repo2.maven.org/maven2 ,這個http://repo2.maven.org/maven2 可能訪問很慢。開發中,10我的都須要分別鏈接http://repo2.maven.org/maven2 下載。如今你本地假設了一個maven-proxy B。全部的人都直接鏈接B。這樣,只有第一我的在下載時,B會從http://repo2.maven.org/maven2 下載jar包,同時緩存,其餘9我的只須要從B下載就夠了。那麼如何讓B來訪問http://repo2.maven.org/maven2 呢
#配置代理
##打開安裝maven的目錄下的conf目錄下的settings.xml文件
##配置其中的<profiles>…</profiles>和<activeProfiles>…</activeProfiles>元素,如將它們配置爲以下:其中的<url>就是服務器所在的url,注<pro
##保存後,將配置好的settings.xml文件拷貝到本地的repository倉庫的同級目錄下,好比說放在E:\app\m2
##此時,從新啓動該服務器,以後對以上的項目(從SVN下載下來的項目)進行打包,即如該項目放在E:\workspace\java\materias\poc\maven\core目錄下,從新打開一個命令窗口,用cd命令轉到該目錄下,執行mvn compile即編譯該項目的命令,此時會出現像以下的結果:
這說明已經成功的在服務器上download了文件oscache-2.4.jar,到這裏就已經代理成功了,如要訪問其它的服務器,只需在配置settings.xml文件的時候,服務器的全稱改成此服務器的全稱便可,如:
<url>的中間即是所要訪問服務器的全稱。
注:有關於服務器的設置請參看有關的附錄。
五、解決Maven內存溢出的問題
找到文件%MAVEN_HOME%\bin\mvn.bat,這就是啓動Maven的腳本文件,找到該文件中如下代碼所在的行:
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE...
它的意思是你能夠設置一些Maven參數,咱們就在該行下面加入如下行:
set MAVEN_OPTS= -Xms256m -Xmx512m
上述設置表示Java堆得大小範圍爲256M-512M,通過上述設置以後,當再運行Maven命令如 mvn -version 的時候,你會看到以下的輸出:
c:\>mvn -versionc:\>set MAVEN_OPTS= -Xms128m -Xmx512m.......
六、忽略失敗
當你運行一個Maven構建的時候,它會包含一系列的項目,每一個項目能夠成功或者失敗。你能夠三種可選的失敗模式:
最快失敗模式:Maven會在遇到第一個失敗的時候失敗(中止)。
最後失敗模式:Maven會在構建最後失敗(中止)。若是Maven refactor中一個失敗了,Maven會繼續構建其它項目,並在構建最後報告失敗。
從不失敗模式:Maven歷來不會爲一個失敗中止,也不會報告失敗。