

圖3:項(xiàng)目的目錄結(jié)構(gòu)

圖4:目錄結(jié)構(gòu)解釋
可以看到依據(jù)原型生的項(xiàng)目包括pom和程序的源代碼目錄樹結(jié)構(gòu)以及測(cè)試源代碼的目錄樹結(jié)構(gòu)。這是標(biāo)準(zhǔn)的Maven項(xiàng)目的布局結(jié)構(gòu)。
然后就可以在這些目錄結(jié)構(gòu)下寫代碼了,F(xiàn)在接著接好一些常用指令:
編譯 mvn compile
執(zhí)行該命令后會(huì)有如下輸出

圖5:執(zhí)行編譯時(shí)的輸出
注意:在第一次編譯的時(shí)候Maven會(huì)下載所有插件以及執(zhí)行當(dāng)前命令所需的依賴項(xiàng)。所以通常會(huì)持續(xù)一段時(shí)間。如圖4中所示花費(fèi)了將近4分鐘。當(dāng)時(shí)我在頭次編譯EIT的時(shí)候也花了很長時(shí)間。不過之后的話就會(huì)快很多了。
編譯后的二進(jìn)制class都會(huì)存放在根目錄下的target/classes中。Maven相對(duì)比于Ant的一個(gè)優(yōu)勢(shì)就是在于你不需要指定源文件的位置以及編譯后文件的保存位置。所有的都依照maven的約束來進(jìn)行。
測(cè)試 mvn test
執(zhí)行該命令后有如下輸出:


圖6:測(cè)試輸出
如果只想編譯測(cè)試代碼則 輸入 mvn test-compile
創(chuàng)建jar包 mvn package
回顧pom.xml可以看到其中packaging被設(shè)定為jar。所以執(zhí)行上面的命令之后就可以在target目錄中找到你需要的jar文件了。
安裝 mvn install
執(zhí)行了上面這個(gè)指令就可以將JAR文件安裝到本地資料庫中(默認(rèn)是~/.m2/repository)。然后得到如下的輸出
圖7:安裝輸出
經(jīng)過以上幾個(gè)命令已經(jīng)將一個(gè)典型的Maven項(xiàng)目進(jìn)行了設(shè)置、構(gòu)建、測(cè)試、打包和安裝。這基本上是使用Maven構(gòu)建項(xiàng)目的大部分。
其實(shí)上述指令對(duì)應(yīng)了Maven的生命周期。
Maven的生命周期:
validate :驗(yàn)證工程是否正確,所有需要的資源是否可用。
compile:編譯項(xiàng)目的源代碼。
test-compile:編譯項(xiàng)目測(cè)試代碼。
test:使用已編譯的測(cè)試代碼,測(cè)試已編譯的源代碼。
package:已發(fā)布的格式,如jar,將已編譯的源代碼打包。
integration-test:在集成測(cè)試可以運(yùn)行的環(huán)境中處理和發(fā)布包。
verify:運(yùn)行任何檢查,驗(yàn)證包是否有效且達(dá)到質(zhì)量標(biāo)準(zhǔn)。
install:把包安裝在本地的repository中,可以被其他工程作為依賴來使用。
deploy:在整合或者發(fā)布環(huán)境下執(zhí)行,將最終版本的包拷貝到遠(yuǎn)程的repository,使得其他的開發(fā)者或者工程可以共享。
generate-sources:產(chǎn)生應(yīng)用需要的任何額外的源代碼,如xdoclet。