《实战Gradle》是2015年9月电子工业出版社出版的图书,作者是【美】Benjamin Muschko(班杰明.马斯可)。
基本介绍
- 书名实战Gradle
- 作者【美】Benjamin Muschko(班杰明.马斯可)着
- 译者李建 杨柳 朱本威 译
- ISBN978-7-121-26925-7
- 页数492页
- 定价89.00元
- 出版社电子工业出版社
- 出版时间2015年9月出版
- 装帧平装
- 开本16开
内容简介
Gradle是一个通用的自动化构建工具。其继承了先驱者Ant和Maven所建立的使用模式,并且允许构建具有表达性、可维护性和容易理解。使用灵活的基于Groovy的DSL,Gradle提供了声明式的可扩展语言元素,让你能够随心所欲地建模项目需求。《实战Gradle》是关于使用Gradle实现端到端的项目自动化的综合指南。从基础知识开始介绍,具有实践性,易于阅读,讨论了在实际项目中如何建立高效的完整的构建过程。在这个过程中,涵盖了一些高级话题,如测试、持续集成和代码质量监测。你还会体验到像设定目标环境和部署软体这样的具体任务。
内容提要
Gradle 是Java 软体开发中的自动化构建工具,类似于传统工具如Ant 和Maven。Gradle 吸收或沿用了Maven 中比较成功的一些实践,但相对于Maven 或Ant 又有极强的扩展。
《实战Gradle》(Gradle in Action)全方位地讲解了Gradle 工具相关的知识,包括Gradle 的基本知识、自动化构建的基本概念和最佳实践,以实际案例的方式解释如何使用Gradle 进行软体项目构建。除了基础知识外,由于软体开发绝对不仅仅是实现业务逻辑代码,《实战Gradle》还介绍了一些解决软体开发中常见问题的实践,如多语言、多项目构建,Gradle 在持续集成和持续交付中的套用,Gradle 构建JVM 其他语言,以及Gradle 集成JavaScript 构建等。
云计算和DevOps 的兴起,给软体行业带来了翻天覆地的变化,《实战Gradle》对于云计算平台、开源社区中的一些工具与Gradle 的结合使用也做了相关的介绍。
因为Groovy 用于编写Gradle 构建配置的DSL,所以为了帮助读者更好地理解Gradle,《实战Gradle》还讲解了Groovy 的基本知识,虽然不是全方位地讲解Groovy,理解Gradle 足矣。
图书目录
第1 部分 Gradle 介绍 1
1 项目自动化介绍 3
1.1 没有项目自动化的生活 4
1.2 项目自动化的好处 5
1.2.1 防止手动介入 5
1.2.2 创建可重複的构建 5
1.2.3 让构建便携 5
1.3 项目自动化的类型 6
1.3.1 按需构建 6
1.3.2 触发构建 7
1.3.3 预定构建 7
1.4 构建工具 8
1.4.1 什幺是构建工具 9
1.4.2 构建工具的剖析 10
1.5 Java 构建工具 12
1.5.1 Apache Ant 12
1.5.2 Apache Maven 16
1.5.3 对下一代构建工具的需求 19
1.6 20
2 下一代构建工具Gradle 23
2.1 为什幺要用Gradle,为什幺是现在 24
2.1.1 Java 构建工具的演变 25
2.1.2 为什幺应该选择Gradle 27
2.2 Gradle 引人注目的特性集 29
2.2.1 可表达性的构建语言和底层的API 29
2.2.2 Gradle 就是Groovy 31
2.2.3 灵活的约定 32
2.2.4 鲁棒和强大的依赖管理 33
2.2.5 可扩展的构建 34
2.2.6 轻鬆的可扩展性 34
2.2.7 和其他构建工具集成 35
2.2.8 社区和公司的推动 36
2.2.9 锦上添花额外的特性 36
2.3 更大的场景持续交付 36
2.3.1 从构建到部署自动化项目 37
2.4 安装Gradle 38
2.5 开始使用Gradle 40
2.6 使用Gradle 的命令行 42
2.6.1 列出项目中所有可用的task 43
2.6.2 任务执行 44
2.6.3 命令行选项 46
2.6.4 Gradle 守护进程 47
2.7 48
3 通过範例学习构建Gradle 项目 49
3.1 介绍学习案例 50
3.1.1 To Do 应用程式 50
3.1.2 任务管理用例 50
3.1.3 检查组件互动 51
3.1.4 构建套用功能 52
3.2 构建Java 项目 55
3.2.1 使用Java 外挂程式 55
3.2.2 定製你的项目 59
3.2.3 配置和使用外部依赖 60
3.3 用Gradle 做Web 开发 62
3.3.1 添加Web 组件 62
3.3.2 使用War 和Jetty 外挂程式 64
3.4 Gradle 包装器 69
3.4.1 配置包装器 70
3.4.2 使用包装器 71
3.4.3 定製包装器 73
3.5 73
第2 部分 掌握基本原理 75
4 构建脚本概要 77
4.1 构建块 78
4.1.1 项目 78
4.1.2 任务 80
4.1.3 属性 80
4.2 使用task 82
4.2.1 项目版本管理 82
4.2.2 声明task 动作 83
4.2.3 访问DefaultTask 属性 84
4.2.4 定义task 依赖 85
4.2.5 终结器task 86
4.2.6 添加任意代码 87
4.2.7 理解task 配置 87
4.2.8 声明task 的inputs 和outputs 90
4.2.9 编写和使用自定义task 92
4.2.10 Gradle 的内置task 类型 95
4.2.11 task 规则 97
4.2.12 在buildSrc 目录下构建代码 100
4.3 挂接到构建生命周期 101
4.3.1 挂接到task 执行图 103
4.3.2 实现task 执行图监听器 103
4.3.3 初始化构建环境 4.4 106
5 依赖管理 107
5.1 依赖管理概述 108
5.1.1 不完善的依赖管理技术 108
5.1.2 自动化依赖管理的重要性 108
5.1.3 使用自动化依赖管理 110
5.1.4 自动化依赖管理的挑战 110
5.2 通过例子学习依赖管理 112
5.3 依赖配置 113
5.3.1 理解配置API 表示 113
5.3.2 自定义配置 114
5.3.3 访问配置 115
5.4 声明依赖 115
5.4.1 理解依赖API 表示 116
5.4.2 外部模组依赖 117
5.4.3 档案依赖 121
5.5 使用和配置仓库 122
5.5.1 理解仓库API 表示 123
5.5.2 Maven 仓库 124
5.5.3 Ivy 仓库 126
5.5.4 扁平的目录仓库 126
5.6 理解本地依赖快取 127
5.6.1 分析快取结构 127
5.6.2 显着的快取特性 129
5.7 解决依赖问题 130
5.7.1 应对版本冲突 130
5.7.2 强制指定一个版本 131
5.7.3 使用依赖观察报告 131
5.7.4 刷新快取 132
5.8 133
6 多项目构建 135
6.1 模组化项目 136
6.1.1 耦合与内聚 136
6.1.2 模组划分 137
6.1.3 模组化重构 138
6.2 组装多项目构建 139
6.2.1 settings 档案介绍 140
6.2.2 理解settings API 表示 141
6.2.3 settings 执行 142
6.2.4 获取settings 档案 142
6.2.5 分层布局与扁平布局 143
6.3 配置子项目 144
6.3.1 理解Project API 表示 145
6.3.2 定义特定的行为 146
6.3.3 声明项目依赖 147
6.3.4 多项目部分构建 149
6.3.5 声明跨项目的task 依赖 151
6.3.6 定义公共行为 153
6.4 独立的项目档案 154
6.4.1 为每个项目创建构建档案 155
6.4.2 定义根项目的构建代码 155
6.4.3 定义子项目的构建代码 155
6.5 自定义项目 156
6.6 157
7 Gradle 测试 159
7.1 自动化测试 160
7.1.1 自动化测试类型 160
7.1.2 自动化测试金字塔 160
7.2 测试Java 应用程式 161
7.2.1 项目布局 162
7.2.2 测试配置 162
7.2.3 测试task 163
7.2.4 自动化测试检测 164
7.3 单元测试 164
7.3.1 使用JUnit 164
7.3.2 使用其他的单元测试框架 168
7.3.3 结合使用多个单元测试框架 170
7.4 配置测试执行 172
7.4.1 命令行选项 173
7.4.2 理解测试API 表示 174
7.4.3 控制运行时行为 175
7.4.4 控制测试日誌 176
7.4.5 并行执行测试 178
7.4.6 回响测试生命周期事件 179
7.4.7 实现测试监听器 180
7.5 集成测试 181
7.5.1 引入用例研究 181
7.5.2 编写测试类 181
7.5.3 在构建中支持集成测试 182
7.5.4 为集成测试建立约定 184
7.5.5 引导测试环境 186
7.6 功能测试 187
7.6.1 引入用例研究 187
7.6.2 在构建中支持功能测试 188
7.7 192
8 扩展Gradle 195
8.1 通过案例学习介绍外挂程式 196
8.1.1 在云中使用Grade 管理套用 196
8.1.2 设定云环境 197
8.2 从零起步构建外挂程式 200
8.3 写一个脚本外挂程式 201
8.3.1 添加CloudBees 的API 类库 201
8.3.2 在task 中使用CloudBees 的API 202
8.4 编写定製的task 类 206
8.4.1 定製task 的实现选项 206
8.4.2 在buildSrc 下定义定製任务 207
8.5 使用和构建对象外挂程式 214
8.5.1 使用对象外挂程式 215
8.5.2 解析对象外挂程式 217
8.5.3 编写对象外挂程式 218
8.5.4 外挂程式扩展机制 219
8.5.5 给外挂程式一个有意义的名字 222
8.5.6 测试对象外挂程式 222
8.5.7 开发和使用独立的对象外挂程式 224
8.6 226
9 集成与迁移 229
9.1 Ant 与Gradle 230
9.1.1 在Gradle 中使用Ant 脚本功能 231
9.1.2 在Gradle 中使用标準的Ant 任务 237
9.1.3 迁移策略 239
9.2 Maven 和Gradle 242
9.2.1 异同之处 243
9.2.2 迁移策略 246
9.3 比较构建 249
9.4 251
第3 部分 从构建到部署 253
10 IDE 支持和工具 255
10.1 使用IDE 外挂程式生成项目档案 256
10.1.1 使用Eclipse 外挂程式 257
10.1.2 使用IDEA 外挂程式 265
10.1.3 使用Sublime Text 外挂程式 270
10.2 在流行的IDE 中管理Gradle 项目 273
10.2.1 SpringSource STS 对Gradle 的支持 274
10.2.2 IntelliJ IDEA 对Gradle 的支持 278
10.2.3 NetBeans 对Gradle 的支持 280
10.3 使用工具API 集成Gradle 283
10.4 287
11 构建多语言项目 289
11.1 使用Gradle 管理JavaScript 290
11.1.1 处理JavaScript 的典型task 290
11.1.2 在To Do 应用程式中使用JavaScript 291
11.1.3 对JavaScript 库依赖管理 292
11.1.4 利用第三方Ant task 合併和压缩JavaScript 294
11.1.5 将JavaScript 最佳化作为开发工作流的一部分 296
11.1.6 使用外部的Java 库分析JavaScript 代码 297
11.1.7 使用第三方Gradle JavaScript 外挂程式 299
11.1.8 在Gradle 中使用Grunt 300
11.2 构建基于JVM 的多语言项目 303
11.2.1 JVM 语言外挂程式的基本功能 303
11.2.2 构建Groovy 项目 305
11.2.3 构建Scala 项目 310
11.3 其他语言 314
11.4 315
12 代码质量管理和监测 317
12.1 将代码分析集成到构建中 318
12.2 衡量代码覆盖率 319
12.2.1 探索代码覆盖率工具 320
12.2.2 使用JaCoCo 外挂程式 322
12.2.3 使用Cobertura 外挂程式 324
12.3 执行静态代码分析 326
12.3.1 探讨静态代码分析工具 327
12.3.2 使用Checkstyle 外挂程式 329
12.3.3 使用PMD 外挂程式 331
12.3.4 使用FindBugs 外挂程式 333
12.3.5 使用JDepend 外挂程式 334
12.4 集成Sonar 335
12.4.1 安装并运行Sonar 337
12.4.2 使用Sonnar Runner 分析项目 338
12.4.3 将代码覆盖率报告发布到Sonar 340
12.5 343
13 持续集成 345
13.1 持续集成的好处 346
13.2 安装Git 348
13.2.1 创建GitHub 账号 348
13.2.2 forking GitHub 仓库 349
13.2.3 安装和配置Git 349
13.3 使用Jenkins 构建项目 350
13.3.1 开始使用Jenkins 350
13.3.2 安装Git 和Gradle 外挂程式 350
13.3.3 定义build job 352
13.3.4 执行build job 354
13.3.5 添加测试报告 356
13.4 探索基于云的解决方案 359
13.5 使用Jenkins 创建构建管道 360
13.5.1 创建构建管道的挑战 360
13.5.2 探索基本的Jenkins 外挂程式 361
13.5.3 配置构建管道 364
13.6 366
14 打包和发布 367
14.1 打包和分发 368
14.1.1 定义附加包 369
14.1.2 创建分发包 371
14.2 发布 374
14.2.1 发布到Maven 仓库中 375
14.2.2 老的和新的发布机制 376
14.2.3 声明软体组件为Maven 发布包 376
14.2.4 发布软体组件到本地Maven 快取中 377
14.2.5 声明自定义的发布包 379
14.2.6 修改所生成的POM 档案 381
14.2.7 发布到本地Maven 仓库中 383
14.2.8 发布到远程的Maven 仓库中 385
14.3 发布到公共的二进制仓库 388
14.3.1 发布到JFrog Bintray 中 388
14.3.2 发布到Maven Central 392
14.4 打包和发布作为构建管道的一部分 393
14.4.1 构建一次 393
14.4.2 发布一次并重用 394
14.4.3 选择一个合适的版本管理方案 395
14.4.4 在可部署包中加入构建信息 398
14.4.5 发布To Do 应用程式WAR 档案 399
14.4.6 扩展构建管道 400
14.5 401
15 基础环境準备和部署 403
15.1 準备基础环境 404
15.1.1 基础设施即代码 404
15.1.2 使用Vagrant 和Puppet 创建虚拟机 405
15.1.3 从Gradle 执行Vagrant 命令 407
15.2 针对部署环境 409
15.2.1 在Groovy 脚本中定义配置 409
15.2.2 使用Groovy 的ConfigSlurper 读取配置 411
15.2.3 在构建中使用配置 412
15.3 自动部署 413
15.3.1 从二进制仓库中获取包 413
15.3.2 确定必需的部署步骤 415
15.3.3 通过SSH 命令部署 415
15.4 部署测试 420
15.4.1 使用冒烟测试验证部署成功 420
15.4.2 使用验收测试验证应用程式功能 423
15.5 将部署集成到构建管道中 424
15.5.1 自动部署到测试环境 425
15.5.2 部署测试 425
15.5.3 按需部署到UAT 和产品环境 426
15.6 427
A 驾驭命令行 429
B Gradle 用户所需要了解的Groovy 435
索引 447