實戰Gradle

實戰Gradle

《實戰Gradle》是2015年9月電子工業出版社出版的圖書,作者是【美】Benjamin Muschko(班傑明.馬斯可)。

內容簡介

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

相關詞條

相關搜尋

熱門詞條

聯絡我們