Copyright © 2006-2008
ii
版权 ................................................................... xi
1. Creative Commons BY-ND-NC ...................................... xi
序: Beta 0.2 ........................................................ xiii
前言 .................................................................. xiv
1. 如何使用本书 .................................................. xiv
2. 你的反馈 ....................................................... xv
3. 字体约定
3
....................................................... xv
4. Maven书写约定
4
.................................................. xv
5. 致谢 .......................................................... xvi
1. 介绍 Apache Maven ................................................... 1
1.1. Maven... 它是什么? ............................................ 1
1.2. 约定优于配置(Convention Over Configuration) .................. 1
1.3. 一个一般的接口 ................................................ 2
1.4. 基于Maven插件的全局性重用 ...................................... 3
1.5. 一个“项目”的概念模型 ......................................... 4
1.6. Maven是Ant的另一种选择么? ..................................... 4
1.7. 比较Maven和Ant ................................................ 5
1.8. 总结 .......................................................... 9
2. 安装和运行Maven ..................................................... 10
2.1. 验证你的Java安装 ............................................. 10
2.2. 下载Maven .................................................... 10
2.3. 安装Maven .................................................... 10
2.3.1. 在Mac OSX上安装Maven ................................... 11
2.3.2. 在Microsoft Windows上安装Maven ......................... 11
2.3.3. 在Linux上安装Maven ..................................... 12
2.3.4. 在FreeBSD或OpenBSD上安装Maven ........................... 12
2.4. 验证Maven安装 ................................................ 12
2.5. Maven安装细节 ................................................ 12
2.5.1. 用户相关配置和仓库 ..................................... 13
2.5.2. 升级Maven .............................................. 13
2.6. 获得Maven帮助 ................................................ 13
2.7. 使用Maven Help插件 ........................................... 14
2.7.1. 描述一个Maven插件 ...................................... 15
2.8. 关于Apache软件许可证 .......................................... 17
I. Maven实战 ........................................................... 19
3. 一个简单的Maven项目 ............................................. 20
3.1. 简介 ..................................................... 20
3.1.1. 下载本章的例子 ..................................... 20
3.2. 创建一个简单的项目 ....................................... 20
3.3. 构建一个简单的项目 ....................................... 22
Maven权威指南
iii
3.4. 简单的项目对象模型 (Project Object Model) ................ 23
3.5. 核心概念 ................................................. 24
3.5.1. Maven插件和目标 (Plugins and Goals) ................ 25
3.5.2. Maven生命周期 (Lifecycle) .......................... 26
3.5.3. Maven坐标 (Coordinates) ............................ 32
3.5.4. Maven仓库(Repositories) ............................ 34
3.5.5. Maven依赖管理 (Dependency Management) .............. 36
3.5.6. 站点生成和报告 (Site Generation and Reporting) ...... 38
3.6. 小结 ..................................................... 38
4. 定制一个Maven项目 .............................................. 39
4.1. 介绍 ..................................................... 39
4.1.1. 下载本章样例 ....................................... 39
4.2. 定义Simple Weather项目 ................................... 39
4.2.1. Yahoo! Weather RSS ................................ 39
4.3. 创建Simple Weather项目 ................................... 40
4.4. 定制项目信息 ............................................. 41
4.5. 添加新的依赖 ............................................. 43
4.6. Simple Weather源码 ....................................... 45
4.7. 添加资源 ................................................. 51
4.8. 运行Simple Weather项目 ................................... 52
4.8.1. Maven Exec 插件 ................................... 53
4.8.2. 浏览你的项目依赖 ................................... 53
4.9. 编写单元测试 ............................................. 55
4.10. 添加测试范围依赖 ........................................ 58
4.11. 添加单元测试资源 ........................................ 58
4.12. 执行单元测试 ............................................ 61
4.12.1. 忽略测试失败 ...................................... 62
4.12.2. 跳过单元测试 ...................................... 63
4.13. 构建一个打包好的命令行应用程序 ........................... 63
5. 一个简单的Web应用 .............................................. 66
5.1. 介绍 ..................................................... 66
5.1.1. 下载本章样例 ....................................... 66
5.2. 定义这个简单的Web应用 .................................... 66
5.3. 创建这个简单的Web应用 .................................... 66
5.4. 配置Jetty插件 ............................................ 68
5.5. 添加一个简单的Servlet .................................... 70
5.6. 添加J2EE依赖 ............................................. 72
5.7. 小结 ..................................................... 74
6. 一个多模块项目 ................................................. 75
6.1. 简介 ..................................................... 75
Maven权威指南
iv
6.1.1. 下载本章样例 ....................................... 75
6.2. simple-parent 项目 ....................................... 75
6.3. simple-weather 模块 ...................................... 77
6.4. simple-webapp 模块 ....................................... 80
6.5. 构建这个多模块项目 ....................................... 82
6.6. 运行Web应用 .............................................. 84
7. 多模块企业级项目 ............................................... 85
7.1. 简介 ..................................................... 85
7.1.1. 下载本章样例 ....................................... 85
7.1.2. 多模块企业级项目 ................................... 85
7.1.3. 本例中所用的技术 ................................... 87
7.2. simple-parent项目 ........................................ 88
7.3. simple-model模块 ......................................... 90
7.4. simple-weather模块 ....................................... 94
7.5. simple-persist模块 ....................................... 99
7.6. simple-webapp模块 ....................................... 108
7.7. 运行这个Web应用 ......................................... 118
7.8. simple-command模块 ...................................... 120
7.9. 运行这个命令行程序 ...................................... 126
7.10. 小结 ................................................... 129
7.10.1. 编写接口项目程序 ................................. 129
8. 优化和重构POM ................................................. 131
8.1. 简介 .................................................... 131
8.2. POM清理 ................................................. 131
8.3. 优化依赖 ................................................ 132
8.4. 优化插件 ................................................ 136
8.5. 使用Maven Dependency插件进行优化 ........................ 137
8.6. 最终的POM ............................................... 140
8.7. 小结 .................................................... 150
II. Maven参考 ......................................................... 151
9. 项目对象模型 .................................................. 152
9.1. 简介 .................................................... 152
9.2. POM ..................................................... 152
9.2.1. 超级POM ........................................... 154
9.2.2. 最简单的POM ....................................... 156
9.2.3. 有效POM ........................................... 157
9.2.4. 真正的POM ......................................... 157
9.3. POM语法 ................................................. 158
9.3.1. 项目版本 .......................................... 158
9.3.2. 属性引用 .......................................... 160
Maven权威指南
v
9.4. 项目依赖 ................................................ 161
9.4.1. 依赖范围 .......................................... 162
9.4.2. 可选依赖 .......................................... 163
9.4.3. 依赖版本界限 ...................................... 165
9.4.4. 传递性依赖 ........................................ 166
9.4.5. 冲突解决 .......................................... 167
9.4.6. 依赖管理 .......................................... 169
9.5. 项目关系 ................................................ 171
9.5.1. 坐标详解 .......................................... 171
9.5.2. 多模块项目 ........................................ 172
9.5.3. 项目继承 .......................................... 174
9.6. POM最佳实践 ............................................. 176
9.6.1. 依赖归类 .......................................... 176
9.6.2. 多模块 vs. 继承 .................................. 178
10. 构建生命周期 ................................................. 184
10.1. 简介 ................................................... 184
10.1.1. 清理生命周期 (clean) ............................. 184
10.1.2. 默认生命周期 (default) ........................... 188
10.1.3. 站点生命周期 (site) .............................. 190
10.2. 打包相关生命周期 ....................................... 190
10.2.1. JAR .............................................. 190
10.2.2. POM .............................................. 191
10.2.3. Maven Plugin ..................................... 191
10.2.4. EJB .............................................. 192
10.2.5. WAR .............................................. 193
10.2.6. EAR .............................................. 193
10.2.7. 其它打包类型 ..................................... 194
10.3. 通用生命周期目标 ....................................... 195
10.3.1. Process Resources ................................ 195
10.3.2. Compile .......................................... 199
10.3.3. Process Test Resources ........................... 200
10.3.4. Test Compile ..................................... 200
10.3.5. Test ............................................. 201
10.3.6. Install .......................................... 202
10.3.7. Deploy ........................................... 202
11. 构建Profile .................................................. 203
11.1. Profile是用来做什么的? ................................. 203
11.1.1. 什么是构建可移植性 ............................... 203
11.1.2. 选择一个适当级别的可移植性 ....................... 204
11.2. 通过Maven Profiles实现可移植性 ......................... 205
- 1
- 2
前往页