《Maven實戰》,許曉斌(Juven Xu),國內社區公認的Maven技術專家、Maven中文用戶組創始人、Maven技術的先驅和積極推動者。2011.1初版。
基礎性的構建工具,做Java的都會,會的程度參差不一,系統性的看一遍書,很快就能看完,可能有出乎意料的收穫。
依賴衝突規則:路徑不同,就近生效;路徑相同,間接依賴,前面生效;直接依賴(在一個文件中,其實沒這個搞的),後面生效。
第1章 Maven簡介
1.1 何爲 Maven
何爲構建
Maven 是優秀的構建工具
Maven 不僅僅是構建工具
1.2 爲什麼需要Maven
組裝 PC 和品牌 PC
IDE 不是萬能的
Make
Ant
不重複發明輪子
1.3 Maven 與極限編程
1.4 被誤解的 Maven
1.5 小結
第2章 Maven 的安裝和配置
2.1 在 Windows 上安裝 Maven
檢查 JDK 安裝
下載 Maven
本地安裝
升級 Maven
2.2 在基於UNIX 的系統上安裝 Maven
下載和安裝
升級 Maven
2.3 安裝目錄分析
M2_HOME
~/.m2
2.4 設置 HTTP 代理
2.5 安裝m2eclipse
2.6 安裝 NetBeans Maven 插件
2.7 Maven 安裝最佳實踐
設置 MAVEN_OPTS 環境變量
配置用戶範圍 settings.xml
不要使用 IDE 內嵌的 Maven
2.8 小結
第3章 Maven 使用入門
3.1 編寫POM
3.2 編寫主代碼
3.3 編寫測試代碼
3.4 打包和運行
3.5 使用 Archetype 生成項目骨架
3.6 m2eclipse 簡單使用
導入 Maven 項目
創建 Maven 項目
運行 mvn 命令
3.7 NetBean Maven 插件簡單使用
打開 Maven 項目
創建 Maven 項目
運行 mvn 命令
3.8 小結
第4章 背景案例
4.1 簡單的賬號註冊服務
4.2 需求闡述
需求用例
界面原型
4.3 簡要設計
接口
模塊結構
4.4 小結
第5章 座標和依賴
5.1 何爲 Maven 座標
5.2 座標詳解
5.3 account-email
account-email 的POM
account-email 的主代碼
account-email 的測試代碼
構建 account-email
5.4 依賴的配置
5.5 依賴範圍
5.5 傳遞性依賴
何爲傳遞性依賴
傳遞性依賴和依賴範圍
5.7 依賴調解
5.8 可選依賴
5.9 最佳實踐
排除依賴
歸類依賴
優化依賴
5.10 小結
第6章 倉庫
6.1 何爲 Maven 倉庫
6.2 倉庫的佈局
6.3 倉庫的分類
本地倉庫
遠程倉庫
中央倉庫
私服
6.4 遠程倉庫的配置
遠程倉庫的認證
部署至遠程倉庫
6.5 快照版本
6.6 從倉庫解析依賴的機制
6.7 鏡像
6.8 倉庫搜索服務
Sonatype Nexus
Jarvana
MVNbrowser
MVNrepository
選擇合適的倉庫搜索服務
6.9 小結
第7章 生命週期和插件
7.1 何爲生命週期
7.2 生命週期詳解
三套生命週期
clean 生命週期
default 生命週期
site 生命週期
命令行與生命週期
7.3 插件目標
7.4 插件綁定
內置綁定
自定義綁定
7.5 插件配置
命令行插件配置
POM 中插件全局配置
POM 中插件任務配置
7.6 獲取插件信息
在線插件信息
使用 maven-help-plugin 描述插件
7.7 從命令行調用插件
7.8 插件解析機制
插件倉庫
插件的默認 groupId
解析插件版本
解析插件前綴
7.9 小結
第8章 聚合與繼承
8.1 account-persist
account-persist 的POM
account-persist 的主代碼
account-persist 的測試代碼
8.2 聚合
8.3 繼承
account-parent
可繼承的 POM 元素
依賴管理
插件管理
8.4 聚合與繼承的關係
8.5 約定優於配置
8.6 反應堆
反應堆的構建順序
裁剪反應堆
8.7 小結
第9章 使用Nexus創建私服
9.1 Nexus簡介
9.2 安裝 Nexus
下載 Nexus
Bundle 方式安裝 Nexus
WAR 方式安裝 Nexus
登錄 Nexus
9.3 Nexus 的倉庫與倉庫組
Nexus 內置的倉庫
Nexus 倉庫分類的概念
創建 Nexus 宿主倉庫
創建 Nexus 代理倉庫
創建 Nexus 倉庫組
9.4 Nexus 的索引與構件搜索
9.5 配置 Maven 從 Nexus 下載構件
9.6 部署構件至 Nexus
使用 Maven 部署構件至 Nexus
手動部署第三方構件至 Nexus
9.7 Nexus 的權限管理
Nexus 的訪問控制模型
爲項目分配獨立的倉庫
9.8 Nexus 的調度任務
9.9 其他私服軟件
9.10 小結
第10章 使用 Maven 進行測試
10.1 account-captcha
account-captcha 的POM
account-captcha 的主代碼
account-captcha 的測試代碼
10.2 maven-surefire-plugin 簡介
10.3 跳過測試
10.4 動態指定要進行的測試用例
10.5 包含與排除測試用例
10.6 測試報告
基本的測試報告
測試覆蓋率報告
10.7 運行 TestNG 測試
10.8 重用測試代碼
10.9 小結
第11章 使用 Hudson 進行測試集成
11.1 持續集成的作用、過程和優勢
11.2 Hudson 簡介
11.3 安裝 Hudson
11.4 準備 Subversion 倉庫
11.5 Hudson 的基本系統設置
11.6 創建 Hudson 任務
Hudson 任務的基本配置
Hudson 任務的源碼倉庫配置
Hudson 任務的構建觸發配置
11.7 監視 Hudson 任務狀態
全局任務狀態
自定義任務視圖
單個任務狀態
Maven 項目測試報告
11.8 Hudson 用戶管理
11.9 郵件反饋
11.10 Hudson 工作目錄
11.11 小結
第12章 使用 Maven 構建 Web 應用
12.1 Web項目的目錄結構
12.2 account-service
account-service 的 POM
account-service 的主代碼
12.3 account-web
account-web 的 POM
account-web 的主代碼
12.4 使用 jetty-maven-plugin 進行測試
12.5 使用 Cargo 實現自動化部署
部署至本地 Web 容器
部署至遠程 Web 容器
第13章 版本管理
13.1 何爲版本管理
13.2 Maven 的版本號定義約定
13.3 主幹、標籤與分支
13.4 自動化版本發佈
13.5 自動化創建分支
13.6 GPG簽名
GPG 及其基本使用
Maven GPG Plugin
13.7 小結
第14章 靈活的構建
14.1 Maven 屬性
14.2 構建環境的差異
14.3 資源過濾
14.4 Maven Profile
針對不同環境的 profile
激活 profile
profile 的種類
14.5 Web 資源過濾
14.6 在 profile 中激活集成測試
14.7 小結
第15章 生成項目站點
15.1 最簡單的站點
15.2 豐富項目信息
15.3 項目報告插件
JavaDocs
Source Xref
CheckStyle
PMD
ChangeLog
Cobertura
15.4 自定義站點外觀
站點描述符
頭部內容及外觀
皮膚
導航邊欄
15.5 創建自定義頁面
15.6 國際化
15.7 部署站點
15.8 小結
第16章 m2eclipse
16.1 m2eclipse簡介
16.2 新建 Maven 項目
16.3 導入 Maven 項目
導入本地 Maven 項目
從 SCM 倉庫導入 Maven 項目
m2eclipse 中 Maven 項目的結構
16.4 執行 mvn 命令
16.5 訪問 Maven 倉庫
Maven 倉庫視圖
搜索構件和 Java 類
16.6 管理項目依賴
添加依賴
分析依賴
16.7 其他實用功能
POM 編輯的代碼提示
Effective POM
下載依賴源碼
16.8 小結
第17章 編寫 Maven 插件
17.1 編寫 Maven 插件的一般步驟
17.2 案例:編寫一個用於代碼行統計的 Maven 插件
17.3 Mojo 標註
17.4 Mojo 參數
17.5 錯誤處理和日誌
17.6 測試 Maven 插件
17.7 小結
第18章 Archetype
18.1 Archetype 使用再敘
Maven Archetype Plugin
使用 Archetype 的一般步驟
批處理方式使用 Archetype
常用 Archetype 介紹
18.2 編寫 Archetype
18.3 Archetype Catalog
什麼是 Archetype Catalog
Archetype Catalog 的來源
生成本地倉庫的 Archetype Catalog
使用 nexus-archetype-plugin
附錄A POM元素參考
附錄B Settings 元素參考
附錄C 常用插件列表