實戰 Gradle (Gradle in Action)

本傑明·馬斯可 (Benjamin Muschko)

立即出貨

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

Gradle是Java軟件開發中的自動化構建工具,類似於傳統工具如Ant和Maven。Gradle吸收或用了Maven中比較成功的一些實踐,但相對於Maven或Ant又有極強的擴展。
《實戰Gradle》(Gradle in Action)全方位地講解了Gradle工具相關的知識,包括Gradle的基本識、自動化構建的基本概念和最佳實踐,以實際案例的方式解釋如何使用Gradle進行軟件項目構建。
除了基礎知識外,由於軟件開發絕對不僅僅是實現業務邏輯代碼,書中還介紹了一些解決軟件開中常見問題的實踐,如多語言、多項目構建,Gradle在持續集成和持續交付中的應用,Gradle構建JVM其他語言,以及Gradle集成JavaScript構建等。
雲計算和DevOps的興起,給軟件行業帶來了翻天覆地的變化,書中對於雲計算平臺、開源社區的一些工具與Gradle的結合使用也做了相關的介紹。
因為Groovy用於編寫Gradle構建配置的DSL,所以為了幫助讀者更好地理解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總結

序言

當你在創建一套類似於Gradle這樣的新技術時,開發過程中最關鍵的部分往往不是寫代碼。一旦項目的初期版本被數以千計的開發者使用,一個社區開始圍繞該項目組建,挑戰就變成了與更多關註者進行交流。他們會使用你的項目,會對項目的優缺點進行評價,而社區的大小也會成十倍或千倍的增長。Gradle已經擁有了一大批關註者,而且在過去的兩年裡,我們已經看到人數有巨大的增長,而我們也準備迎接更多的用戶。
因此,一點也不誇張地說,擁有一本好書是多麼的重要。掌握多種技術和能力的開發者都希望有一本通俗易懂的書,它能夠講解語法和工具背後的哲理。因為只有這樣,開發者才有信心通過這本唯一的Gradle權威參考書讓社區成長。《實戰Gradle》就是這樣一本書。不僅如此,這本書還讓Gradle的新用戶有機會去瞭解,Gradle是如何適應到持續交付這樣更廣闊的領域中的。
本書的作者Benjamin,是你希望能夠從開源社區中閃現出來的一類專家。他是Gradle的長期貢獻者,也是多個Gradle流行插件的作者。他擁有傳播者和開發者兩種角色。Benjamin擁有一種很少見的能力,能夠深入到一個特定開發挑戰的核心細節中,我們並向用戶解釋這些細節。他在最近加入了Gradleware,並成為Gradle開發團隊的一員,我們感到非常的高興。
我真心希望你能夠喜歡這本書,也享受在工作中使用Gradle。祝你的軟件交付過程變得有趣而且有效。
Hans Dockter,
Gradle and Gradleware創始人