Maven权威指南(中文版.带书签).pdf
《Maven权威指南》,原名《Maven:The Definitive Guide》,作者:Tim O’Brien、John Casey、Brian Fox、Bruce Snyder 和 Jason Van Zyl。翻译:Juven Xu。PDF 格式,大小 6.7MB。本书带有 pdf 书签,方便读者阅读。 内容简介: 本书是关于Maven最权威最全面的材料,它清晰了解释了Maven这个工具如何给你的软件开发项目带来秩序。作者都 拥有丰富的经验,其中包括Maven 的创始人Jason Van Zyl。 由于Maven在不断发展,本书也只是一个开始,你应该把它看成是第1版。本书的主要目的还是给Maven开发者提供支持。 本书一开始介绍了Maven是什么,以及在各个环境下安装运行Maven。之后的内容分为两个部分:第一部分为Maven实战,沿用了Maven:A Developer’s Notebook(该书覆盖的是Maven1的内容,目前绝大多数用户都在使用Maven2)的风格,通过一个个生动实际的例子,循序渐进的阐释了 Maven的用法和核心概念,这些例子从最简单的命令行程序,到Web应用,到多模块项目,直至多模块企业级项目。第二部分为Maven参考, 当你渐渐熟 悉Maven,并且遇到问题需要解决的时候,这些参考就是最权威和详细的材料了,通过它们,你能了解Maven的高级特性,更深刻的理解Maven系统如 何工作。参考覆盖的内容包括项目对象模型,构建生命周期,Profile,站点生成,编写插件等等。值得一提的是,该部分还详细介绍了m2eclipse 和Nexus,m2eclipse是强大的在Eclipse中集成Maven的插件,Nexus是一个功能丰富的仓库管理器,能让你更方便的管理项目构件。 目录: 版权 ................................................................... 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 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 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 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 11.2.1. 覆盖一个项目对象模型 ............................. 207 11.3. 激活Profile ............................................ 208 11.3.1. 激活配置 ......................................... 210 11.3.2. 通过属性缺失激活 ................................. 212 11.4. 外部Profile ............................................ 212 11.5. Settings Profile ....................................... 213 11.5.1. 全局Settings Profile ............................. 215 11.6. 列出活动的Profile ...................................... 215 11.7. 提示和技巧 ............................................. 216 11.7.1. 常见的环境 ....................................... 216 11.7.2. 安全保护 ......................................... 218 11.7.3. 平台分类器 ....................................... 219 11.8. 小结 ................................................... 222 12. Maven套件 .................................................... 223 12.1. 简介 ................................................... 223 12.2. Assembly基础 ........................................... 223 12.2.1. 预定义的套件描述符 ............................... 224 12.2.2. 构建一个套件Building an Assembly ................. 225 12.2.3. 套件作为依赖 ..................................... 227 12.2.4. 通过套件依赖组装套件 ............................. 228 12.3. 套件描述符概述 ......................................... 232 12.4. 套件描述符 ............................................. 234 12.4.1. 套件描述符中的属性引用 ........................... 234 12.4.2. 必须的套件信息 ................................... 234 12.5. 控制一个套件的内容 ..................................... 236 12.5.1. Files 元素 ....................................... 236 12.5.2. FileSets 元素 .................................... 237 12.5.3. fileSets####### ................................... 239 12.5.4. dependencySets 元素 .............................. 241 12.5.5. moduleSets 元素 .................................. 250 12.5.6. Repositories元素 ................................. 256 12.5.7. 管理套件的根目录 ................................. 256 12.5.8. componentDescriptors和containerDescriptorHandlers ... 257 12.6. 最佳实践 ............................................... 258 12.6.1. 标准的,可重用的套件描述符 ....................... 258 12.6.2. 分发(聚合)套件 ................................. 261 12.7. 总结 ................................................... 265 13. 属性和资源过滤 ............................................... 266 13.1. 简介 ................................................... 266 13.2. Maven属性 .............................................. 266 13.2.1. Maven项目的属性 .................................. 267 13.2.2. Maven的Settings属性 .............................. 268 13.2.3. 环境变量属性 ..................................... 269 13.2.4. Java系统属性 ..................................... 269 13.2.5. 用户定义的属性 ................................... 271 13.3. 资源过滤 ............................................... 272 14. Maven和Eclipse: m2eclipse .................................... 276 14.1. 简介 ................................................... 276 14.2. m2eclipse .............................................. 276 14.3. 安装 m2eclipse 插件 .................................... 277 14.3.1. 安装前提条件 ..................................... 277 14.3.2. 安装 m2eclipse ................................... 279 14.4. 开启 Maven 控制台 ...................................... 279 14.5. 创建一个 Maven 项目 .................................... 280 14.5.1. 从 SCM 签出一个 Maven 项目 ...................... 281 14.5.2. 用Maven Archetype创建一个Maven项目 ............... 283 14.5.3. 创建一个 Maven 模块 .............................. 285 14.6. 创建一个Maven POM文件 .................................. 287 14.7. 导入Maven项目 .......................................... 290 14.7.1. 导入一个Maven项目 ................................ 292 14.7.2. 具体化一个Maven项目 .............................. 293 14.8. 运行Maven构建 .......................................... 296 14.9. 使用Maven进行工作 ...................................... 298 14.9.1. 添加及更新依赖或插件 ............................. 300 14.9.2. 创建一个Maven模块 ................................ 301 14.9.3. 下载源码 ......................................... 302 14.9.4. 打开项目页面 ..................................... 302 14.9.5. 解析依赖 ......................................... 302 14.10. 使用Maven仓库进行工作 ................................. 302 14.10.1. 搜索 Maven 构件和 Java 类 ...................... 303 14.10.2. 为Maven仓库编制索引 ............................. 306 14.11. 使用基于表单的POM编辑器 ............................... 308 14.12. 在m2eclipse中分析项目依赖 ............................. 317 14.13. Maven 选项 ............................................ 322 14.14. 小结 .................................................. 327 15. 站点生成 ..................................................... 328 15.1. 简介 ................................................... 328 15.2. 使用Maven构建项目站点 .................................. 328 15.3. 自定义站点描述符 ....................................... 331 15.3.1. 自定义页面顶端图片 ............................... 332 15.3.2. 自定义导航菜单 ................................... 333 15.4. 站点目录结构 ........................................... 334 15.5. 编写项目文档 ........................................... 335 15.5.1. APT样例 .......................................... 336 15.5.2. FML样例 .......................................... 336 15.6. 部署你的项目web站点 .................................... 337 15.6.1. 配置服务器认证 ................................... 338 15.6.2. 配置文件和目录模式 ............................... 339 15.7. 自定义站点外观 ......................................... 339 15.7.1. 自定义站点CSS .................................... 339 15.7.2. 创建自定义的站点模板 ............................. 340 15.7.3. 可重用的web站点皮肤 .............................. 345 15.7.4. 创建自定义的主题CSS .............................. 346 15.7.5. 在皮肤中自定义站点模板 ........................... 347 15.8. 提示与技巧 ............................................. 348 15.8.1. 给HEAD嵌入XHTML .................................. 348 15.8.2. 在你站点logo下添加链接 ........................... 349 15.8.3. 为你的站点添加导航链接 ........................... 349 15.8.4. 添加项目版本 ..................................... 350 15.8.5. 修改发布日期格式和位置 ........................... 351 15.8.6. 使用Doxia宏 ...................................... 352 16. 仓库管理器 ................................................... 354 16.1. 简介 ................................................... 354 16.1.1. Nexus历史 ........................................ 354 16.2. 安装Nexus .............................................. 355 16.2.1. 从Sonatype下载Nexus .............................. 355 16.2.2. 安装Nexus ........................................ 355 16.2.3. 运行Nexus ........................................ 355 16.2.4. 安装后检查单 ..................................... 357 16.2.5. 为Redhat/Fedora/CentOS设置启动脚本 ............... 358 16.2.6. 升级Nexus版本 .................................... 360 16.3. 使用Nexus .............................................. 361 16.3.1. 浏览仓库 ......................................... 362 16.3.2. 浏览组 ........................................... 364 16.3.3. 搜索构件 ......................................... 366 16.3.4. 浏览系统RSS源 .................................... 367 16.3.5. 浏览日志文件和配置 ............................... 369 16.3.6. 更改你的密码 ..................................... 370 16.4. 配置Maven使用Nexus ..................................... 371 16.4.1. 使用Nexus中央代理仓库 ............................ 371 16.4.2. 使用Nexus作为快照仓库 ............................ 372 16.4.3. 为缺少的依赖添加仓库 ............................. 374 16.4.4. 添加一个新的仓库 ................................. 375 16.4.5. 添加一个仓库至一个组 ............................. 377 16.5. 配置Nexus .............................................. 379 16.5.. 定制服务器配置 .................................... 379 16.5.2. 管理仓库 ......................................... 381 16.5.3. 管理组 ........................................... 386 16.5.4. 管理路由 ......................................... 388 16.5.5. 网络配置 ......................................... 391 16.6. 维护仓库 ............................................... 391 16.7. 部署构件至Nexus ........................................ 392 16.7.1. 部署发布版 ....................................... 393 16.7.2. 部署快照版 ....................................... 394 16.7.3. 部署第三方构件 ................................... 395 17. 编写插件 ..................................................... 397 17.1. 简介 ................................................... 397 17.2. Maven编程 .............................................. 397 17.2.1. 什么是反转控制? ................................. 397 17.2.2. Plexus简介 ....................................... 398 17.2.3. 为什么使用Plexus? ................................ 399 17.2.4. 什么是插件? ..................................... 399 17.3. 插件描述符 ............................................. 400 17.3.1. 顶层插件描述符元素 ............................... 402 17.3.2. Mojo配置 ......................................... 402 17.3.3. 插件依赖 ......................................... 405 17.4. 编写自定义插件 ......................................... 405 17.4.1. 创建一个插件项目 ................................. 405 17.4.2. 一个简单的Java Mojo .............................. 406 17.4.3. 配置插件前缀 ..................................... 408 17.4.4. 插件中的日志 ..................................... 411 17.4.5. Mojo类注解 ....................................... 412 17.4.6. 当Mojo失败的时候 ................................. 414 17.5. Mojo参数 ............................................... 415 17.5.1. 为Mojo参数提供值 ................................. 415 17.5.2. 多值的Mojo参数 ................................... 417 17.5.3. 依赖于一个Plexus组件 ............................. 419 17.5.4. Mojo参数注解 ..................................... 419 17.6. 插件和Maven生命周期 .................................... 420 17.6.1. 执行平行的生命周期 ............................... 421 17.6.2. 创建自定义的生命周期 ............................. 421 17.6.3. 覆盖默认生命周期 ................................. 423 18. 使用可选语言编写插件 .......................................... 425 18.1. 使用Ant编写插件 ........................................ 425 18.2. 创建一个Ant插件 ........................................ 425 18.3. 使用JRuby编写插件 ...................................... 428 18.3.1. 创建一个JRuby插件 ................................ 429 18.3.2. Ruby Mojo实现 .................................... 431 18.3.3. Ruby Mojo中使用日志 .............................. 434 18.3.4. Raise一个MojoError ............................... 434 18.3.5. 在JRuby中引用Plexus组件 .......................... 435 18.4. 使用Groovy编写插件 ..................................... 436 18.4.1. 创建一个Groovy插件 ............................... 436 A. 附录: Settings细节 ................................................. 439 A.1. 简介 ........................................................ 439 A.2. Settings细节 ................................................ 439 A.2.1. 简单值 ................................................ 439 A.2.2. 服务器(Servers) ..................................... 441 A.2.3. 镜像(Mirrors) ....................................... 442 A.2.4. 代理(Proxies) ....................................... 443 A.2.5. Profiles .............................................. 444 A.2.6. 激活(Activation) .................................... 444 A.2.7. 属性(Properties) .................................... 446 A.2.8. 仓库(Repositories) .................................. 447 A.2.9. 插件仓库 .............................................. 449 A.2.10. 激活的Profile ........................................ 449 B. 附录: Sun规格说明可选实现 .......................................... 450
用户评论