基本信息
作者:許曉斌
出版社:機械工業出版社
ISBN:9787111321545
出版日期:2010 年11月
開本:16開
頁碼:361
版次:1-1
編輯推薦
國內首本Maven著作,基於Maven 3.0,內容全面,實戰性強
國內公認Maven專家親自執筆,技術專家聯袂推薦,權威性毋庸置疑
內容簡介
本書由國內社區公認的Maven專家Juven Xu親自執筆,內容的權威性毋庸置疑。
本書是國內第一本公開出版的Maven專著。它內容新穎,基於最新發布的Maven 3.0,不僅詳盡講解了Maven 3.0的所有新功能和新特性,而且還將這些新功能和新特性與Maven 2.x版本進行了對比,以便於正在使用Maven 2.x版本的用戶能更好地理解。本書它內容全面,以從專家的角度闡釋Maven的價值開篇,全面介紹了Maven的安裝、配置和基本使用方法,以便於初學者參考;詳細講解了坐標和依賴、Maven倉庫、生命周期和外掛程式、聚合與繼承等Maven的核心概念,建議所有讀者仔細閱讀;系統性地闡述了使用Nexus建立私服、使用Maven進行測試、使用Hudson進行持續集成、使用Maven構建Web套用、Maven的版本管理、Maven的靈活構建、生成項目站點和Maven的m2eclipse外掛程式等實用性較強的高級知識,讀者可有選擇性的閱讀;擴展性地講解了如何Maven和ARCHETYPE外掛程式,這部分內容對需要編寫外掛程式擴展Maven或需要編寫Archetype維護自己的項目骨架以更便於團隊開發的讀者來說尤為有幫助。它實戰性強,不僅絕大部分知識點都有相應的案例,而且本書還在第4章設計了一個背景案例,後面的很多章節都是圍繞這個案例展開的,可操作性極強。
本書適合所有Java程式設計師閱讀,無論你是從未使用過Maven,亦或是已經使用Maven很長一段時間了,相信你都能從本書中獲得有價值的參考。本書也適合所有項目經理閱讀,它能幫助你更規範、更高效地管理Java項目。
你是否早已厭倦了日復一日的手工構建工作?你是否對各個項目風格迥異的構建系統感到恐懼?Maven——這一Java社區事實標準的項目管理工具,能幫你從瑣碎的手工勞動中解脫出來,幫你規範整個組織的構建系統。不僅如此,它還有依賴管理、自動生成項目站點等超酷的特性,已經有無數的開源項目使用它來構建項目並促進團隊交流,每天都有數以萬計的開發者在訪問中央倉庫以獲取他們需要的依賴。
本書內容全面而系統,Maven的原理、使用方法和高級套用盡含其中;注重實戰是本書的另一個特點,不僅在各個知識點都輔有大量的小案例,而且還有一個綜合性的案例貫穿全書。如果你想使用Maven,或正在使用Maven,本書將給你絕佳的指導。
目錄
前言
致謝
第1章maven簡介/1
1 1何為maven/2
1 1 1何為構建/2
1 1 2maven是優秀的構建工具/2
1 1 3maven不僅僅是構建工具/3
1 2為什麼需要maven/4
1 2 1組裝pc和品牌pc/4
1 2 2ide不是萬能的/4
1 2 3make/5
1 2 4ant/5
1 2 5不重複發明輪子/6
1 3maven與極限編程/7
1 4被誤解的maven/8
1 5小結/9
第2章maven的安裝和配置/10
2 1在windows上安裝maven/11
2 1 1檢查jdk安裝/11
2 1 2下載maven/11
2 1 3本地安裝/12
2 1 4升級maven/13
2 2在基於unix的系統上安裝maven/13
2 2 1下載和安裝/13
2 2 2升級maven/15
2 3安裝目錄分析/15
2 3 1m2_home/15
2 3 2~/?m2/16
2 4設定http代理/17
2 5安裝m2eclipse/18
2 6安裝netbeans maven外掛程式/22
2 7maven安裝最佳實踐/24
2 7 1設定maven_opts環境變數/24
2 7 2配置用戶範圍settings?xml/24
2 7 3不要使用ide內嵌的maven/25
2 8小結/26
第3章maven使用入門/27
3 1編寫pom/28
3 2編寫主代碼/29
3 3編寫測試代碼/30
3 4打包和運行/34
3 5使用archetype生成項目骨架/36
3 6m2eclipse簡單使用/37
3 6 1導入maven項目/37
3 6 2創建maven項目/39
3 6 3運行MVN命令/39
3 7netbeans maven外掛程式簡單使用/41
3 7 1打開maven項目/41
3 7 2創建maven項目/42
3 7 3運行mvn命令/43
3 8小結/44
第4章背景案例/45
4 1簡單的賬戶註冊服務/46
4 2需求闡述/46
4 2 1需求用例/46
4 2 2界面原型/484 3簡要設計/49
4 3 1接口/49
4 3 2模組結構/49
4 4小結/50
第5章坐標和依賴/51
5 1何為maven坐標/52
5 2坐標詳解/53
5 3account?email/54
5 3 1account?email 的pom/54
5 3 2account?email的主代碼/56
5 3 3account?email的測試代碼/60
5 3 4構建account?email/62
5 4依賴的配置/62
5 5依賴範圍/63
5 6傳遞性依賴/64
5 6 1何為傳遞性依賴/64
5 6 2傳遞性依賴和依賴範圍/65
5 7依賴調解/66
5 8可選依賴/66
5 9最佳實踐/68
5 9 1排除依賴/68
5 9 2歸類依賴/69
5 9 3最佳化依賴/71
5 10小結/74
第6章倉庫/75
6 1何為maven倉庫/76
6 2倉庫的布局/76
6 3倉庫的分類/78
6 3 1本地倉庫/79
6 3 2遠程倉庫/80
6 3 3中央倉庫/80
6 3 4私服/81
6 4遠程倉庫的配置/82
6 4 1遠程倉庫的認證/83
6 4 2部署至遠程倉庫/84
6 5快照版本/85
6 6從倉庫解析依賴的機制/87
6 7鏡像/89
6 8倉庫搜尋服務/90
6 8 1sonatype nexus/90
6 8 2jarvana/91
6 8 3mvnbrowser/91
6 8 4mvnrepository/92
6 8 5選擇合適的倉庫搜尋服務/93
6 9小結/93
第7章生命周期和外掛程式/94
7 1何為生命周期/95
7 2生命周期詳解/96
7 2 1三套生命周期/97
7 2 2clean生命周期/97
7 2 3default生命周期/97
7 2 4site生命周期/98
7 2 5命令行與生命周期/98
7 3外掛程式目標/997 4外掛程式綁定/99
7 4 1內置綁定/100
7 4 2自定義綁定/102
7 5外掛程式配置/104
7 5 1命令行外掛程式配置/104
7 5 2pom中外掛程式全局配置/104
7 5 3pom中外掛程式任務配置/105
7 6獲取外掛程式信息/106
7 6 1線上外掛程式信息/106
7 6 2使用maven?help?plugin描述外掛程式/108
7 7從命令行調用外掛程式/109
7 8外掛程式解析機制/110
7 8 1外掛程式倉庫/110
7 8 2外掛程式的默認groupid/111
7 8 3解析外掛程式版本/111
7 8 4解析外掛程式前綴/112
7 9小結/114
第8章聚合與繼承/115
8 1account?persist/116
8 1 1account?persist的pom/116
8 1 2account?persist的主代碼/118
8 1 3account?persist的測試代碼/123
8 2聚合/124
8 3繼承/127
8 3 1account?parent/127
8 3 2可繼承的pom元素/130
8 3 3依賴管理/131
8 3 4外掛程式管理/135
8 4聚合與繼承的關係/137
8 5約定優於配置/139
8 6反應堆/143
8 6 1反應堆的構建順序/144
8 6 2裁剪反應堆/145
8 7小結/147
第9章使用nexus創建私服/148
9 1nexus簡介/149
9 2安裝nexus/149
9 2 1下載nexus/149
9 2 2bundle方式安裝nexus/150
9 2 3war方式安裝nexus/151
9 2 4登錄nexus/152
9 3nexus的倉庫與倉庫組/152
9 3 1nexus內置的倉庫/152
9 3 2nexus倉庫分類的概念/154
9 3 3創建nexus宿主倉庫/154
9 3 4創建nexus代理倉庫/155
9 3 5創建nexus倉庫組/156
9 4nexus的索引與構件搜尋/157
9 5配置maven從nexus下載構件/160
9 6部署構件至nexus/163
9 6 1使用maven部署構件至nexus/163
9 6 2手動部署第三方構件至nexus/164
9 7nexus的許可權管理/165
9 7 1nexus的訪問控制模型/165
9 7 2為項目分配獨立的倉庫/167
9 8nexus的調度任務/169
9 9其他私服軟體/170
9 10小結/171
第10章使用maven進行測試/172
10 1account?Captcha/173
10 1 1account?captcha的pom/173
10 1 2account?captcha的主代碼/175
10 1 3account?captcha的測試代碼/180
10 2maven?surefire?plugin簡介/184
10 3跳過測試/184
10 4動態指定要運行的測試用例/186
10 5包含與排除測試用例/187
10 6測試報告/188
10 6 1基本的測試報告/189
10 6 2測試覆蓋率報告/190
10 7運行testng測試/191
10 8重用測試代碼/193
10 9小結/194
第11章使用hudson進行持續集成/195
11 1持續集成的作用、過程和優勢/196
11 2hudson簡介/198
11 3安裝hudson/199
11 4準備subversion倉庫/200
11 5hudson的基本系統設定/203
11 6創建hudson任務/205
11 6 1hudson任務的基本配置/205
11 6 2hudson任務的源碼倉庫配置/206
11 6 3hudson任務的構建觸發配置/207
11 6 4hudson任務的構建配置/208
11 7監視hudson任務狀態/209
11 7 1全局任務狀態/209
11 7 2自定義任務視圖/211
11 7 3單個任務狀態/212
11 7 4maven項目測試報告/214
11 8hudson用戶管理/215
11 9郵件反饋/217
11 10hudson工作目錄/218
11 11小結/220
第12章使用maven構建web套用/221
12 1web項目的目錄結構/222
12 2account?service/224
12 2 1account?service的pom/224
12 2 2account?service的主代碼/225
12 3account?web/230
12 3 1account?web的pom/230
12 3 2account?web的主代碼/231
12 4使用jetty?maven?plugin進行測試/237
12 5使用cargo實現自動化部署/239
12 5 1部署至本地web容器/239
12 5 2部署至遠程web容器/241
12 6小結/242
第13章版本管理/243
13 1何為版本管理/244
13 2maven的版本號定義約定/245
13 3主幹、標籤與分支/246
13 4自動化版本發布/247
13 5自動化創建分支/252
13 6gpg簽名/253
13 6 1gpg及其基本使用/254
13 6 2maven gpg plugin/255
13 7小結/258
第14章靈活的構建/259
14 1maven屬性/260
14 2構建環境的差異/262
14 3資源過濾/263
14 4maven profile/265
14 4 1針對不同環境的profile/265
14 4 2激活profile/266
14 4 3profile的種類/269
14 5web資源過濾/271
14 6在profile中激活集成測試/272
14 7小結/274
第15章生成項目站點/275
15 1最簡單的站點/276
15 2豐富項目信息/278
15 3項目報告外掛程式/281
15 3 1javadocs/281
15 3 2source xref/283
15 3 3checkstyle/284
15 3 4pmd/286
15 3 5changelog/288
15 3 6cobertura/289
15 4自定義站點外觀/290
15 4 1站點描述符/290
15 4 2頭部內容及外觀/291
15 4 3皮膚/292
15 4 4導航邊欄/294
15 5創建自定義頁面/295
15 6國際化/298
15 7部署站點/299
15 8小結/302
第16章m2eclipse/303
16 1m2eclipse簡介/304
16 2新建maven項目/304
16 3導入maven項目/306
16 3 1導入本地maven項目/307
16 3 2從scm倉庫導入maven項目/308
16 3 3m2eclipse中maven項目的結構/309
16 4執行mvn命令/310
16 5訪問maven倉庫/312
16 5 1maven倉庫視圖/312
16 5 2搜尋構件和java類/314
16 6管理項目依賴/315
16 6 1添加依賴/315
16 6 2分析依賴/317
16 7其他實用功能/319
16 7 1pom編輯的代碼提示/319
16 7 2effective pom/320
16 7 3下載依賴源碼/321
16 8小結/321
第17章編寫maven外掛程式/323
17 1編寫maven外掛程式的一般步驟/324
17 2案例:編寫一個用於代碼行統計的maven外掛程式/324
17 3mojo標註/331
17 4mojo參數/332
17 5錯誤處理和日誌/336
17 6測試maven外掛程式/337
17 7小結/341
第18章archetype/342
18 1archetype使用再敘/343
18 1 1maven archetype plugin/343
18 1 2使用archetype的一般步驟/343
18 1 3批處理方式使用archetype/344
18 1 4常用archetype介紹/345
18 2編寫archetype/347
18 3archetype catalog/352
18 3 1什麼是archetype catalog/352
18 3 2archetype catalog的來源/353
18 3 3生成本地倉庫的archetype catalog/354
18 3 4使用nexus?archetype?plugin/355
18 4小結/356
附錄apom元素參考/357
附錄bsettings元素參考/359
附錄c常用外掛程式列表/360
前言
為什麼寫這本書
2007年的時候,我加入了一個新成立的開發團隊,我們一起做一個新的項目。經驗較豐富的同事習慣性地開始編寫Ant腳本,也有人希望能嘗試一下Maven。當時我比較年輕,且富有激情,因此大家決定讓我對Maven做些研究和實踐。於是我慢慢開始學習並推廣Maven,這期間有人支持,也有人牴觸,而我則盡力地為大家排除困難,並做一些內部交流,漸漸地,牴觸的人越來越少,我的工作也得到了大家的認可。
為什麼一開始有人會牴觸這一優秀的技術呢?後來我開始反思這一經歷,我認為Maven陡峭的學習曲線和匱乏的文檔是當時最主要的問題。為了能改善這個問題,我開始在部落格中撰寫各類關於Maven的中文部落格,翻譯了O’Reilly出版的《Maven權威指南》一書,並建立了國內的Maven中文社區,不定期地回答各類Maven相關問題,這在一定程度上推動了Maven這一優秀的技術在國內的傳播。
後來我加入了Maven之父Jason Van Zyl創建的Sonatype,參與Nexus的開發並負責維護Maven中央倉庫,這些工作使我對開源和Maven有了更深的認識,也給了我從頭寫一本關於Maven的書的信心。我希望它能夠更貼近國內的技術人員的需求,能夠出現在書店的某個角落裡,給那些有心發現它的讀者帶來一絲欣喜。
該書寫作後期適逢Maven 3的發布,這距離我剛接觸Maven時已經過去3年有餘,感嘆時光的流逝!Maven在2007年至2010年取得了飛速的發展,現在幾乎已經成為了所有java開源項目的標配,Struts、Hibernate、 ehcache等知名的開源項目都使用Maven進行管理。據了解,國內也有越來越多的知名的軟體公司開始使用Maven管理他們的項目,例如阿里巴巴和淘寶。
本書面向的讀者
首先,本書適合所有Java程式設計師閱讀。由於自動化構建、依賴管理等問題並不只存在於Java世界,因此非Java程式設計師也能夠從該書中獲益。無論你是從未接觸過Maven、還是已經用了Maven很長時間,亦或者想要擴展Maven,都能從本書獲得有價值的參考建議。
其次,本書也適合項目經理閱讀,它能幫助你更規範、更高效地管理Java項目。
本書的主要內容
第1章對Maven做了簡要介紹,通過一些程式設計師熟悉的例子介紹了Maven是什麼,為什麼需要Maven。建議所有讀者都閱讀以獲得一個大局的印象。
第2~3章是對Maven的一個入門介紹,這些內容對初學者很有幫助,如果你已經比較熟悉Maven,可以跳過。
第4章介紹了本書使用的背景案例,後面的很多章節都會基於該案例展開,因此建議讀者至少簡單瀏覽一遍。
第5~8章深入闡述了Maven的核心概念,包括坐標、依賴、倉庫、生命周期、外掛程式、繼承和多模組聚合,等等,每個知識點都有實際的案例相佐,建議讀者仔細閱讀。
第9章介紹使用Nexus建立私服,如果你要在實際工作中使用Maven,這是必不可少的。
第10~16章介紹了一些相對高級且離散的知識點,包括測試、持續集成與Hudson、Web項目與自動化部署、自動化版本管理、智慧型適應環境差異的靈活構建、站點生成,以及Maven的Eclipse外掛程式m2eclipse,等等。讀者可以根據自己實際需要和興趣選擇性地閱讀。
第17~18章介紹了如何編寫Archeype和Maven外掛程式。一般的Maven用戶在實際工作中往往不需要接觸這些知識,如果你需要編寫外掛程式擴展Maven,或者需要編寫Archetype維護自己的項目骨架以方便團隊開發,那么可以仔細閱讀這兩章的內容。
本書代碼下載
大家可以從我的網站下載本書的代碼也可以通過我的網站與我取得聯繫,歡迎大家與我交流任何關於本書的問題和關於Maven的問題。
咖啡與工具
本書相當一部分的內容是在蘇州十全街邊的Solo咖啡館完成的,老闆Yin親手烘焙咖啡豆、並能做出據說是蘇州最好的咖啡,這小橋流水畔的溫馨小屋能夠幫我消除緊張和焦慮,和Yin有一句沒一句的聊天也是相當的輕鬆。Yin還教會了我如何自己研磨咖啡豆、手沖滴率咖啡,讓我能夠每天在家裡也能享受香氣四溢的新鮮咖啡。
媒體評論
隨著近兩年Maven在國內的普及,越來越多的公司與項目開始接受並使用其作為項目構建與依賴管理工具,Java開發人員對Maven相關的資料的需求也越來越迫切。Juven Xu作為Sonatype的員工和《Maven權威指南》的譯者,對Maven有著非常深刻的理解,他為Maven中文社區所做的工作也為推動Maven的發展做出了非常大的貢獻。這本書是Juven犧牲了將近一年的業餘時間創作而成的,內容全面、實戰性強、深度和廣度兼備,是中文社區不可多得的優秀參考資料。——Maven中文社區
本國語言的Maven參考資料永遠是受歡迎的,而現在Juven Xu(許曉斌)——一位活躍在開源社區的知名Maven專家正好有條件編寫一本關於Maven的中文圖書。他的新書《MAVEN實戰》將帶領你一步步從認識Maven開始走向更高級的現實世界中的真實項目套用。這本書的主要內容不僅包括Maven在Web領域的套用、使用Maven管理版本發布、以及如何編寫自己的Maven外掛程式,而且還涵蓋了許多如何在企業環境中套用Maven的技術細節,例如Eclipse集成、Nexus倉庫管理器以及用Hudson進行持續集成等。如果你是一個正在使用Maven的中國程式設計師,該書是必備的!——John Smart Wakaleo Consuting首席諮詢顧問,《Java Power Tools》(O'Reilly出版)作者