首页>参考读物>计算机科学与技术>软件与程序设计

Maven实战
作者 : 许晓斌 著
出版日期 : 2010-11-02
ISBN : 978-7-111-32154-5
定价 : 65.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 378
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

全书一共分为四个部分,以Maven的核心概念和最佳实践为主要内容,包含大量实例。第一部分:基础篇,除了Maven的概念、安装、在Eclipse中的使用以及能让读者迅速上手的实例等常规内容外,还包括开发者在使用Maven时最常遇到的问题解答,以及开发者对Maven的误解;第二部分:核心概念篇,以Amazon的图书查询服务为背景案例,依次讲解了与Maven坐标和依赖、Maven仓库、Maven声明周期、Maven插件等相关的核心内容;第三部分:实践篇:包含大量最佳实践,其中涉及的问题是开发者在使用Maven时经常会碰到,但是又恨难解决的,包括Maven中的约定、模块划分、依赖的合理管理等内容;第四部分:附录,包括POM详解、Settings详解以及索引等重要内容。
本书源码 github:https://github.com/juven/mvn_in_action_code

图书前言

为什么写这本书
  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维护自己的项目骨架以方便团队开发,那么可以仔细阅读这两章的内容。
本书代码下载
  大家可以从我的网站下载本书的代码:http://wwwjuvenxucom/mvninaction/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Maven的问题。
咖啡与工具
  本书相当一部分的内容是在苏州十全街边的Solo咖啡馆完成的,老板Yin亲手烘焙咖啡豆、并能做出据说是苏州最好的咖啡,这小桥流水畔的温馨小屋能够帮我消除紧张和焦虑,和Yin有一句没一句的聊天也是相当的轻松。Yin还教会了我如何自己研磨咖啡豆、手冲滴率咖啡,让我能够每天在家里也能享受香气四溢的新鲜咖啡。
  本书的书稿是使用Git和Unfuddle(http://unfuddlecom/)进行管理的,书中的大量截图是通过Jing(http://wwwtechsmithcom/jing/)制作的。
  JuvenXu2010年10月于苏州Solo咖啡致谢
  感谢费晓峰,是你最早让我学习使用Maven,并在我开始学习的过程中给予了不少帮助。
  感谢Maven开源社区特别是Maven的创立者Jason Van Zyl,是你们一起创造了如此优秀的开源工具,造福了全世界这么多的开发人员。
  感谢我的家人,一年来,我的大部分原来属于你们的业余时间都给了这本书,感谢你们的理解和支持。
  感谢二少、Garin、Sutra、JTux、红人、linux_china、Chris、Jdonee、zc0922、还有很多Maven中文社区的朋友,你们给了本书不少建议,并在我写作过程中不断鼓励我和支持我,你们是我写作最大的动力之一。
  最后感谢本书的策划编辑杨福川和曾珊,我从你们身上学到了很多,你们是最专业的、最棒的。

上架指导

计算机\程序设计

封底文字

随着近两年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》(《Java开发超级工具集》(O'Reilly出版)作者

作者简介

许晓斌 著:许晓斌 Maven中文社区创始人,Maven技术的先驱和积极推动者,经验十分丰富。Maven仓库管理器Nexus(著名开源软件)的核心开发者之一,曾组织翻译《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

教学资源推荐
作者: 刘冰 张林 蒋贵全 杨勇 编著
作者: [美] 约翰·戴维·斯通(John David Stone) 著
作者: 王珊珊 臧洌 张志航 编著
作者: 周纯杰 何顶新 周凯波 彭刚 张惕远 编著
参考读物推荐
作者: (美) Graham Lee 著
作者: 万国根等
作者: 阿里集团 新零售技术事业群 CBU技术部 著