轉(zhuǎn)自:http://www.cnblogs.com/haippy/archive/2012/07/05/2577233.html
maven目錄介紹:http://www.cnblogs.com/now-fighting/p/4858982.html
Maven 標(biāo)準(zhǔn)目錄結(jié)構(gòu)
好的目錄結(jié)構(gòu)可以使開發(fā)人員更容易理解項目,為以后的維護工作也打下良好的基礎(chǔ)绎晃。Maven2根據(jù)業(yè)界公認(rèn)的最佳目錄結(jié)構(gòu)根穷,為開發(fā)者提供了缺省的標(biāo)準(zhǔn)目錄模板。Maven2的標(biāo)準(zhǔn)目錄結(jié)構(gòu)如下:
src/main/javaApplication/Library sources
src/main/resourcesApplication/Library resources
src/main/filtersResource filter files
src/main/assemblyAssembly descriptors
src/main/configConfiguration files
src/main/scriptsApplication/Library scripts
src/main/webappWeb application sources
src/test/javaTest sources
src/test/resourcesTest resources
src/test/filtersTest resource filter files
src/siteSite
LICENSE.txtProject's license
NOTICE.txtNotices and attributions required by libraries that the project depends on
README.txtProject's readme
使用目錄模板扇商,可以使 pom.xml 更簡潔。因為 Maven2 已經(jīng)根據(jù)缺省目錄宿礁,預(yù)定義了相關(guān)的動作案铺,而無需人工的干預(yù)。以 resources 目錄為例:
src/main/resources梆靖,負(fù)責(zé)管理項目主體的資源控汉。在使用Maven2執(zhí)行compile之后,這個目錄中的所有文件及子目錄返吻,會復(fù)制到target/classes目錄中姑子,為以后的打包提供了方便。
src/test/resources测僵,負(fù)責(zé)管理項目測試的資源街佑。在使用Maven2執(zhí)行test-compile之后,這個目錄中的所有文件及子目錄捍靠,會復(fù)制到target/test-classes目錄中沐旨,為后續(xù)的測試做好了準(zhǔn)備。
這些動作在 Maven1 中榨婆,是需要在 maven.xml 中使用或來完成的磁携。如今,完全不需要在pom.xml中指定就能夠自動完成良风。在src和test都使用resources谊迄,方便構(gòu)建和測試闷供,這種方式本就已是前人的經(jīng)驗。通過使用Maven2统诺,使這個經(jīng)驗在開發(fā)團隊中得到普及歪脏。
創(chuàng)建標(biāo)準(zhǔn)目錄模板,可以通過如下命令:
mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=codelineCommons
groupId和artifactId的含義與Maven1中的含義一樣粮呢,參數(shù)artifactId的值會作為項目根目錄的名字唾糯。除了建立相應(yīng)的目錄之外,Maven2還會創(chuàng)建缺省的pom.xml鬼贱。
Maven2也考慮到:不同類型的項目需要擁有不同的目錄結(jié)構(gòu)移怯。如創(chuàng)建web項目,可以使用命令:
mvn archetype:create -DgroupId=com.mycompany.app-DartifactId=my-webapp-DarchetypeArtifactId=maven-archetype-webapp
Maven 生命周期
Maven生命周期已經(jīng)在另一篇博客中介紹過了(http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html)这难,這里引用IBM?developerworks 的文章再一次討論Maven 的生命周期舟误。
在Maven2中有了明確的生命周期概念,而且都提供與之對應(yīng)的命令姻乓,使得項目構(gòu)建更加清晰明了嵌溢。主要的生命周期階段:
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í)行丈牢,將最終版本的包拷貝到遠(yuǎn)程的repository删豺,使得其他的開發(fā)者或者工程可以共享立砸。
generate-sources戈咳,產(chǎn)生應(yīng)用需要的任何額外的源代碼网沾,如xdoclet癞蚕。
如果要執(zhí)行項目編譯,那么直接輸入:mvn compile即可辉哥,對于其他的階段可以類推桦山。階段之間是存在依賴關(guān)系(dependency)的,如test依賴test-compile醋旦。在執(zhí)行mvn test時恒水,會先運行mvn test-compile,然后才是mvn test饲齐。