天天看点

Maven实战. 导读

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项目。

<b>前言 </b><b>为什么写这本书</b>

    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中文社区的朋友,你们给了本书不少建议,并在我写作过程中不断鼓励我和支持我,你们是我写作最大的动力之一。

    最后感谢本书的策划编辑杨福川和曾珊,我从你们身上学到了很多,你们是最专业的、最棒的。

<b>第1章maven简介/1</b>

<b>1.1何为maven/2</b>

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

<b>第2章maven的安装和配置/10</b>

<b>2.1在windows上安装maven/11</b>

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

<b>第3章maven使用入门/27</b>

<b></b>

<b>3.1编写pom/28</b>

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