Part I. Maven实战

第一本关于Maven的书是来自O'ReillyMaven开发者笔记,这本书通过一系列步骤介绍Maven。开发者笔记系列书籍背后的想法是,当开发人员和另一个开发人员坐在一起,经历他曾经用来学习和编码的整个思考过程,这样会学得最好。虽然开发者笔记系列成功了,但笔记格式有一个缺点:笔记被设计成“集中关注于目标”,它让你通过一系列步骤来完成某个特定的目标。而有大的参考书,或者“动物”书,提供全面的材料,覆盖了整个的课题。两种书都有优缺点,因此只出版一种书是有问题的。

为了阐明这个问题,考虑如下情形,数万的读者读完开发者笔记后,他们都知道了如何创建一个简单的项目,比方说一个Maven项目从一组源文件创建一个WAR。但是,当他们想知道更多的细节或者类似于Assembly插件的详细描述的时候,他们会陷入僵局。因为没有关于Maven的写得很好的参考手册,他们需要在Maven站点上搜寻插件文档,或者在一系列邮件列表中不停挑选。当人们真正开始钻研Maven的时候,他们开始在Maven站点上阅读无数的由很多不同的开发人员编写的粗糙的HTML文档,这些开发人员对为插件编写文档有着完全不同的想法:数百的的开发人员有着不同的书写风格,语气以其方言。除去很多好心的志愿者所做的努力,在Maven站点上阅读插件文档,最好的情况下,令人有受挫感,最坏的情况下,成为了抛弃Maven的理由。很多情况下Maven用户感觉“被骗了”因为他们不能从站点文档上找到答案。

虽然第一本Maven开发者笔记吸引了很多Maven的新用户,为很多人培训了最基本的Maven用例,但同样多的读者,当他们不能找到准确的写得很好的参考材料的时候,感觉到了挫败感。很多年来,缺少可靠的(或者权威的)参考资料阻碍了Maven的发展;这也成了一种Maven用户社区成长的阻碍力量。本书想要改变这种情况,通过提供,第一:在Part I, “Maven实战”中更新原本的Maven开发者笔记,第二:在Part II, “Maven Reference”中第一次尝试提供全面的参考。在你手里的(或者屏幕上的)实际上是二书合一。

本书的这个部分中,我们不会抛弃开发者笔记中的描述性推进方式,这是帮助人们“以实战方式”学习Maven的很有价值的材料。在本书的第一部分中我们“边做边介绍”,然后在Part II, “Maven Reference”中我们填充空白,钻研细节,介绍那些Maven新手不感兴趣的高级话题。Part II, “Maven Reference”可能使用与样例项目无关的一个参考列表和一程序列表,而Part I, “Maven实战”将由实际样例和故事驱动。读完Part I, “Maven实战”后,你将会拥有几个月内开始使用Maven所需要的一切。只有当你需要通过编写定制插件来开始自定义你的项目,或者想了解特定插件细节的时候,才可能需要回到Part II, “Maven Reference”

Table of Contents

3. 一个简单的Maven项目
3.1. 简介
3.1.1. 下载本章的例子
3.2. 创建一个简单的项目
3.3. 构建一个简单的项目
3.4. 简单的项目对象模型 (Project Object Model)
3.5. 核心概念
3.5.1. Maven插件和目标 (Plugins and Goals)
3.5.2. Maven生命周期 (Lifecycle)
3.5.3. Maven坐标 (Coordinates)
3.5.4. Maven仓库(Repositories)
3.5.5. Maven依赖管理 (Dependency Management)
3.5.6. 站点生成和报告 (Site Generation and Reporting)
3.6. 小结
4. 定制一个Maven项目
4.1. 介绍
4.1.1. 下载本章样例
4.2. 定义Simple Weather项目
4.2.1. Yahoo! Weather RSS
4.3. 创建Simple Weather项目
4.4. 定制项目信息
4.5. 添加新的依赖
4.6. Simple Weather源码
4.7. 添加资源
4.8. 运行Simple Weather项目
4.8.1. Maven Exec 插件
4.8.2. 浏览你的项目依赖
4.9. 编写单元测试
4.10. 添加测试范围依赖
4.11. 添加单元测试资源
4.12. 执行单元测试
4.12.1. 忽略测试失败
4.12.2. 跳过单元测试
4.13. 构建一个打包好的命令行应用程序
5. 一个简单的Web应用
5.1. 介绍
5.1.1. 下载本章样例
5.2. 定义这个简单的Web应用
5.3. 创建这个简单的Web应用
5.4. 配置Jetty插件
5.5. 添加一个简单的Servlet
5.6. 添加J2EE依赖
5.7. 小结
6. 一个多模块项目
6.1. 简介
6.1.1. 下载本章样例
6.2. simple-parent 项目
6.3. simple-weather 模块
6.4. simple-webapp 模块
6.5. 构建这个多模块项目
6.6. 运行Web应用
7. 多模块企业级项目
7.1. 简介
7.1.1. 下载本章样例
7.1.2. 多模块企业级项目
7.1.3. 本例中所用的技术
7.2. simple-parent项目
7.3. simple-model模块
7.4. simple-weather模块
7.5. simple-persist模块
7.6. simple-webapp模块
7.7. 运行这个Web应用
7.8. simple-command模块
7.9. 运行这个命令行程序
7.10. 小结
7.10.1. 编写接口项目程序
8. 优化和重构POM
8.1. 简介
8.2. POM清理
8.3. 优化依赖
8.4. 优化插件
8.5. 使用Maven Dependency插件进行优化
8.6. 最终的POM
8.7. 小结