本書是國內第一本公開出版的Maven專著。它內容新穎,基於最新發布的Maven 3?0,不僅詳盡講解了Maven 3?0的所有新功能和新特性,而且還將這些新功能和新特性與Maven 2
基本介紹
- 書名:Waven實戰
- 作者:許曉斌
- ISBN:9787111321545
- 出版社:機械工業出版社
- 出版時間:2010-11-1
- 裝幀:平裝
- 開本:16
內容簡介,目錄,
內容簡介
?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項目。
目錄
前言
致謝
第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界面原型/48
4?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外掛程式目標/99
7?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國際化/29815?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命令/31016?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