本文內(nèi)容主要參考
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
1.安裝
下載Maven.目前的版本是2.0.4
http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-2.0.4-bin.zip
解壓縮后,設(shè)置環(huán)境變量M2_HOME到maven目錄;在環(huán)境變量path中增加maven的bin目錄。
在命令行輸入
Mvn -version
顯示
Maven version: 2.0.4
則安裝成功。
2. 網(wǎng)絡(luò)設(shè)置
maven運(yùn)行時(shí)需要網(wǎng)絡(luò)環(huán)境。如果你的網(wǎng)絡(luò)需要代理,則要在maven目錄的conf/settings.xml中設(shè)置。
找到<proxies>節(jié)點(diǎn),按照例子,根據(jù)自己實(shí)際環(huán)境設(shè)置。
3.體驗(yàn)maven
在命令行中,進(jìn)入你常用的項(xiàng)目文件夾,輸入
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
如果網(wǎng)絡(luò)配置正確,maven就會(huì)下載需要的文件,執(zhí)行任務(wù),最終顯示“BUILD SUCCESSFUL”,并生成my-app目錄。
讓我們看一下mvn對(duì)項(xiàng)目目錄的組織:
My-app
├─pom.xml
└─src
├─main
│ └─java
│ └─com
│ └─mycompany
│ └─app
│ └─App.java
└─test
└─java
└─com
└─mycompany
└─app
└─AppTest.java
可以看出,代碼和測試代碼分別放在main及test文件夾下。
Pom.xml描述項(xiàng)目對(duì)象模型(Project Object Model)。其模式文件為http://maven.apache.org/xsd/maven-4.0.0.xsd
詳細(xì)的POM說明請(qǐng)參考相關(guān)資料。
4.maven命令
在命令行下輸入mvn -h , 顯示mvn幫助,其中usage: mvn [options] [<goal(s)>] [<phase(s)>]表明了mvn命令的構(gòu)成。
Options:可選的參數(shù)。比如前面提到的-version , -h等。
Goal(s): 表示maven構(gòu)建的“目標(biāo)”。比如前面的
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
其中archetype:create表示archetype插件下的create目標(biāo)。這里,插件是為了某種目的構(gòu)建的目標(biāo)的集合,maven通過插件擴(kuò)展其功能。
還可以為目標(biāo)傳遞一些參數(shù),比如上面的“-DgroupId=com.mycompany.app -DartifactId=my-app”。
Phase(s):階段。表示maven構(gòu)建生命周期 中的一個(gè)步驟。使用相位命令時(shí),maven會(huì)執(zhí)行生命周期中該階段之前的所有命令,使項(xiàng)目處于指定的“狀態(tài)”。
比如在剛才創(chuàng)建的項(xiàng)目路徑下輸入mvn compile,會(huì)創(chuàng)建target文件夾,并編譯class,使項(xiàng)目處于“已編譯”狀態(tài)。
- maven定義的生命周期中主要的相位如下:
- validate: 驗(yàn)證項(xiàng)目是否正確以及相關(guān)信息是否可用。
- compile: 編譯。
- test: 通過junit進(jìn)行單元測試。
- package: 根據(jù)事先指定的格式(比如jar),進(jìn)行打包。
- integration-test: 部署到運(yùn)行環(huán)境中,準(zhǔn)備進(jìn)行集成測試。
- verify: 對(duì)包進(jìn)行有效性性和質(zhì)量檢查。
- install: 安裝到本地代碼庫。
- deploy: 在集成或發(fā)布環(huán)境,將包發(fā)布到遠(yuǎn)程代碼庫。
在“默認(rèn)”的生命周期之外,還有兩個(gè)“階段”:
- clean: 清除以前的構(gòu)建物。
- site: 生成項(xiàng)目文檔。
階段實(shí)際上是通過目標(biāo)的組合實(shí)現(xiàn)的。
5.組合命令
可以通過對(duì)目標(biāo)及相位的組合使得一個(gè)命令完成多個(gè)功能,比如:
mvn clean dependency:copy-dependencies package
相當(dāng)于按順序執(zhí)行
mvn clean
mvn dependency:copy-dependencies
mvn package
到這里,對(duì)maven應(yīng)該有一個(gè)初步的印象并能上手使用了吧?更多的內(nèi)容可以查閱相關(guān)的文檔。