

圖3:項目的目錄結構

圖4:目錄結構解釋
可以看到依據原型生的項目包括pom和程序的源代碼目錄樹結構以及測試源代碼的目錄樹結構。這是標準的Maven項目的布局結構。
然后就可以在這些目錄結構下寫代碼了。現在接著接好一些常用指令:
編譯 mvn compile
執行該命令后會有如下輸出

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


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