

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

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

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


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