《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 常用插件列表