标题：Maven经典实战
基本信息
作者：许晓斌  
出版社：机械工业出版社
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出版）作者