maven是一個采用純java編寫的開 源項目管理工具。maven采用了一種被稱之為project object model (pom)概念來管理項目,所有的項目配置資訊都被定義在一個叫做pom.xml的檔案中,通過該檔案,maven可以管理項目的整個聲明周期,包括編 譯,建構,測試,釋出,報告等等。目前apache下絕大多數項目都已經采用maven進行管理。而maven本身還支援多種插件,可以友善更靈活的控制 項目。
1:http://maven.apache.org/download.html 下載下傳最新版本 maven 3.0.2 (binary zip)

2:解壓到 d:
3:配置環境變量
maven_home : d:\apache-maven-3.0.2
maven : %maven_home%\bin
(可選) maven_opts : -xms256m -xmx512m
在path 前面 加上 %maven%;
4:驗證安裝是否成功
在指令行上輸入 : mvn -version; 回車,如看到下面資訊表示安裝成功:
5:建立項目
在指令行上輸入 :mvn archetype:create -dgroupid=com.mycompany.app -dartifactid=my-app 回車,
如果你是首次運作該指令(goal),maven将要花一些時間去把最新的工具包(maven 把它叫作artifacts)下載下傳到你的本地倉庫。
指令執行完後你将看到maven生成了一個名為my-app的目錄,這個名字就是你在指令中指定的artifactid,進入該目錄,你将發現以下标準的項目結構:
其中:src/main/java 目錄包含了項目的源代碼,src/test/java 目錄包含了項目的測試代碼,pom.xml是項目的項目對象模型(project object model or pom)。
6:pom
pom.xml 檔案是maven對一個項目的核心配置,這個檔案将包含你希望如何建構項目的大多數配置資訊。pom大而複雜,但你不用全部去了解,隻要使用一些常用的配置就可以了。下面列出這個pom的内容:
引用
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0</modelversion>
<groupid>com.mycompany.app</groupid>
<artifactid>my-app</artifactid>
<version>1.0-snapshot</version>
<packaging>jar</packaging>
<name>my-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceencoding>utf-8</project.build.sourceencoding>
</properties>
<dependencies>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
7:第5步我們做了什麼
mvn archetype:create -dgroupid=com.mycompany.app -dartifactid=my-app
執行maven 指令(goal)archetype:create,并且設定了一些參數( -dgroupid=com.mycompany.app -dartifactid=my-app)
在這個指令中,字首 archetype 是包含create指令的一個maven的plugin。這個goal指令根據項目原型(符合maven标準的項目模闆)建立了一個簡單的項目。
現在可以确定地說,一個maven plugin 就是一些有着相同目的的goals指令的集合,例如 jboss-maven-plugin 這個插件,就是為了處理各種和jboss相關的任務。
8:build 項目
在指令行上 輸入 : cd my-app 回車,進入到 項目路徑下
再輸入 mvn package 回車這時指令行将會列印出各種動作,并且以下面一段資訊結束:
與首次執行的指令(那是一個goal)
archetype:create
不同,這次執行的隻是一個簡單的指令---package。不同于goal,這是一個phase(階段),一個phase是指建構生命周期的一個階段,建構生命周期是指有序的一系列phase。當給出一個phase,maven将執行所有的在此階段前的phase及其自身,例如,如果我們執行compile階段,實際上執行的階段有:
validate
generate-sources
process-sources
generate-resources
process-resources
compile
你可以使用以下的指令來測試新編譯和打包出來的jar包,
java -cp target/my-app-1.0-snapshot.jar com.mycompany.app.app
這時将列印出最經典的:
hello world!
9:運作maven工具
雖然很難列出一張非常全面的表,但在此可先列出最普通的預設的生命周期階段:
validate:驗證工程是否正确,所有需要的資源是否可用。
compile:編譯項目的源代碼。
test:使用合适的單元測試架構來測試已編譯的源代碼。這些測試不需要已打包和布署。
package:把已編譯的代碼打包成可釋出的格式,比如jar。
integration-test:如有需要,将包處理和釋出到一個能夠進行內建測試的環境。
verify:運作所有檢查,驗證包是否有效且達到品質标準。
install:把包安裝在本地的repository中,可以被其他工程作為依賴來使用。
deploy:在內建或者釋出環境下執行,将最終版本的包拷貝到遠端的repository,使得其他的開發者或者工程可以共享。
clean:清除先前建構的artifacts(在maven中,把由項目生成的包都叫作artifact)。
site:為項目生成文檔站點。
上面列出的各個phases(階段)實際上對應着潛在的goals,特殊的每個階段執行的特殊的goals由項目的類型所決定,例如:如果項目的類型是jar,package階段将預設執行jar:jar的goals,如果項目類型是war,那麼package階段執行的goals将是war:war。
有件有趣的事情需要注意,那就是phases和goals需要按一定的順序來執行。
mvn clean dependency:copy-dependencies package
這個指令将先清除項目,然後拷貝依賴,最後把項目打包,當然,在打包之前,會先執行此階段之前的階段.如compile,test等.
生成站點
mvn site
這個階段生成基于pom.xml配置的項目資訊。你可以在target/site目錄下看到生成的文檔。