使用Ant進行Java開發

使用Ant進行Java開發

《使用Ant進行Java開發》是2005年9月電子工業出版社出版的圖書,作者是(美)海特、(美)朗戈翰 ,譯者是劉永丹、陳洋。

基本介紹

  • 書名:使用Ant進行Java開發
  • 作者:(美)海特、(美)朗戈翰 
  • 原版名稱:Java Development With Ant
  • 譯者:劉永丹,陳洋
  • ISBN:7121016834
  • 頁數:672
  • 出版社:電子工業出版社
  • 出版時間:2005年9月
  • 開本:16
內容簡介,圖書目錄,

內容簡介

ant,一個備受讚譽的java構建工具。它以其易於使用、與平台無關、迎合如今項目自動測試和自動部署的需要,成為許多項目構建過程的重要環節。目前它已成為所有主要開源java項目採用的獨立工具,並已成了事實上的標準。
本書作者是被sam ruby先生譽為“兩個最了解ant的人”。他們將以最佳的方式給你講授ant,從一個簡單的構建定義開始,然後展示加入你的項目所需的那些功能。如果你是一個初學ant的人,本書將系統帶你領略大多數java項目都要經歷的核心步驟:編譯、測試、執行、打包以及分發。如果你是一個富有經驗的ant用戶,本書能教你如何使用ant“增強系統的能力”。所以不管你使用ant的經驗如何,都能從本書中學到很多東西,你的軟體項目也將因為使用ant作為構建過程的基礎而受益匪淺。
本書分為三個部分,第1部分提供了ant及其功能的基礎知識。第2部分,每章討論一個專題,在其中探討了多種項目,並介紹了ant在其中扮演的關鍵角色。第3部分是為那些想突破既有能力限制的高級用戶撰寫的內容。

圖書目錄

譯者序 v
序 xxi
前言 xxiii
致謝 xxv
關於本書 xxvii
關於作者 xxxii
關於封面 xxxiii
part 1 學習ant
第1章 ant簡介 3
1.1 何為ant 3
1.1.1 何為構建過程,我們為什麼需要它 4
1.1.2 為什麼我們認為ant是一個優秀的構建工具 4
1.2 ant的核心概念 5
1.2.1 示例工程 7
1.3 為什麼要使用ant 10
1.3.1 集成開發環境 10
1.3.2 make 11
1.3.3 其他構建工具 13
1.3.4 立刻就來運行吧 14
1.4 ant的演化史 14
.1.5 ant與軟體開發方法 16
1.5.1 xp(extreme programming) 16
1.5.2 rational統一過程 17
1.6 示例工程 17
1.6.1 文檔搜尋引擎—ant示例工程 18
1.7 太棒了,可是ant能否…… 19
1.8 超越java開發 21
1.8.1 web 發布引擎 21
1.8.2 簡單的工作流引擎 21
1.8.3 microsoft .net 以及其他語言 21
1.9 小結 22
第2章 開始ant之旅 23
2.1 定義我們的第一個工程 23
2.2 第一步: 檢查工具是否已經就緒 24
2.3 第二步: 編寫你的第一個ant構建檔案 24
2.3.1 測試構建檔案 25
2.4 第三步: 運行你的第一個構建 26
2.4.1 如果構建失敗 27
2.4.2 查看更多構建細節 29
2.5 第四步:強制結構 31
2.5.1 布置源檔案路徑 32
2.5.2 布置構建目錄 33
2.5.3 布置發布目錄 34
2.5.4 創建構建檔案 35
2.5.5 目標依賴 35
2.5.6 運行新的構建檔案 36
2.5.7 重新運行構建 37
2.5.8 ant如何處理命令行上的多個目標 38
2.6 第五步: 運行我們的程式 39
2.6.1 為什麼要在ant內部運行 39
2.6.2 添加執行目標 40
2.6.3 運行新的目標 40
2.7 ant 命令行選項 41
2.7.1 指定要運行的構建 42
2.7.2 控制所提供的信息量 42
2.7.3 獲取項目信息 44
2.8 最終的構建檔案 44
2.9 小結 46
第3章 理解ant的datatypes和特性 47
3.1 入門 48
3.1.1 datatype 概述 48
3.1.2 特性概述 48
3.2 通過[javac]介紹datatype和特性 49
3.3 路徑(path) 51
3.4 檔案集(fileset) 52
3.4.1 檔案集舉例 53
3.4.2 默認排除項(default excludes) 53
3.5 模式集(patternset) 54
3.6 選擇器(selector) 56
3.7 datatype元素命名 57
3.8 過濾集(filterset) 58
3.8.1 構建運行時在檔案中插入日期戳 58
3.9 過濾鏈(filterchain)和過濾閱讀器(filterreader) 59
3.10 mapper 61
3.10.1 identity映射器 61
3.10.2 flatten 映射器 62
3.10.3 merge 映射器 62
3.10.4 glob 映射器 63
3.10.5 regexp 映射器 63
3.10.6 package映射器 64
3.11 其他ant datatype 65
3.11.1 zipfileset 65
3.11.2 dirset 65
3.11.3 filelist 65
3.11.4 classfileset 66
3.12 特性(property) 66
3.12.1 通過[property]任務設定特性 67
3.12.2 [property] 任務怎樣區別於其他任務 70
3.12.3 檢查資源的可用性:[available] 70
3.12.4 忽略不必要的步驟:[uptodate] 以節省時間 72
3.12.5 用[condition]測試條件 72
3.12.6 在命令行中設定特性 74
3.12.7 用[tstamp]創建構建的時間戳 75
3.12.8 從xml檔案中載入特性 76
3.13 使用特性控制ant 77
3.13.1 有條件地執行 target 77
3.13.2 有條件的patternset包含/排除(inclusion/exclusion) 78
3.13.3 有條件的構建失敗 78
3.14 引用 79
3.14.1 特性和引用 80
3.14.2 為嵌套的模式集使用引用 81
3.15 最佳實踐 82
3.16 小結 83
第4章 使用junit進行測試 85
4.1 重構(refactoring) 86
4.2 java main() 測試 86
4.3 junit 入門 87
4.3.1 編寫測試用例 88
4.3.2 運行測試用例 88
4.3.3 斷言預期的結果 88
4.3.4 測試用例生命周期 90
4.3.5 編寫測試組件 90
4.3.6 獲取及安裝junit 91
4.3.7 擴展junit 91
4.4 在我們的應用程式中使用單元測試 92
4.4.1 先編寫測試 92
4.4.2 在測試過程中處理外部資源 93
4.5 junit任務—[junit] 94
4.5.1 組織目錄以安放測試 94
4.5.2 配置junit到構建過程 95
4.6 測試失敗意味著構建失敗 97
4.6.1 捕獲測試結果 97
4.6.2 運行多重測試 99
4.6.3 創建你自己的結果(result)formatter 100
4.7 生成測試結果報告 100
4.7.1 生成報告且允許當測試失敗時中止構建 102
4.7.2 從命令行運行單個測試用例 103
4.7.3 初始化測試環境 103
4.7.4 其他測試問題 104
4.8 短路測試 105
4.8.1 處理大量測試 108
4.9 最佳實踐 109
4.10 小結 110
第5章 運行程式 111
5.1 為什麼需要運行外部程式 111
5.2 運行java程式 112
5.2.1 介紹[java]任務 113
5.2.2 設定classpath 114
5.2.3 參數 115
5.2.4 定義系統特性 116
5.2.5 在新jvm中運行程式 117
5.2.6 設定環境變數 118
5.2.7 控制新jvm 118
5.2.8 使用failonerror處理錯誤 119
5.2.9 執行jar檔案 120
5.2.10 調用第三方程式 121
5.2.11 在調用之前探查java程式 123
5.2.12 設定逾時 124
5.3 使用[exec]啟動本地程式 124
5.3.1 設定環境變數 126
5.3.2 處理錯誤 126
5.3.3 處理逾時 127
5.3.4 製作並運行一個shell命令 127
5.3.5 在程式被調用之前進行探測 129
5.4 使用[apply]進行批量執行 130
5.5 處理輸出 131
5.6 執行的限制 132
5.7 最佳實踐 132
5.8 小結 133
第6章 工程打包 134
6.1 移動、複製和刪除檔案 135
6.1.1 如何刪除檔案 135
6.1.2 怎樣複製檔案 136
6.1.3 如何移動檔案 137
6.1.4 過濾 138
6.2 為打包做準備 139
6.2.1 構建發布代碼及其文檔 139
6.2.2 加入數據檔案 141
6.2.3 準備編制文檔 142
6.2.4 準備安裝腳本和文檔 143
6.2.5 為重發布準備庫 145
6.3 創建存檔檔案 146
6.3.1 jar檔案 148
6.3.2 創建一個jar檔案 148
6.3.3 測試jar檔案 149
6.3.4 創建jar清單 150
6.3.5 向jar中增加額外元數據 152
6.3.6 jar檔案的最佳實踐 152
6.3.7 簽署jar檔案 152
6.4 創建zip檔案 154
6.4.1 創建二進制發布 154
6.4.2 創建原始碼發布 156
6.4.3 合併zip檔案 157
6.4.4 zip檔案的最佳實踐 157
6.5 創建tar檔案 158
6.6 使用war檔案創建web應用程式 160
6.7 打包測試 161
6.8 小結 162
第7章 部署 163
7.1 典型部署問題 164
7.1.1 再看這些任務 164
7.1.2 部署所用的工具 164
7.2 用於部署的任務 165
7.2.1 使用[ftp]進行檔案傳輸 166
7.2.2 探測伺服器的有效性 166
7.2.3 使用[sleep]讓構建暫停 168
7.2.4 ant的email任務 169
7.2.5 使用[get]獲取遠程檔案 170
7.2.6 使用任務進行部署 171
7.3 基於ftp的打包應用程式發布 171
7.3.1 通過[input]任務獲得信息 172
7.4 基於email的打包應用程式發布 173
7.5 本地部署到tomcat 4.x 174
7.5.1 tomcat的管理servlet api 175
7.5.2 使用ant部署到tomcat 176
7.6 遠程部署到tomcat 181
7.6.1 插曲:使用[antcall]調用目標 182
7.6.2 在部署中使用[antcall] 185
7.7 對部署進行測試 187
7.8 小結 187
第8章 綜合運用ant 188
8.1 我們目前的應用程式 188
8.2 構建定製的ant任務庫 189
8.3 載入跨工程的共用特性 194
8.4 處理版本依賴 196
8.4.1 安裝庫的新版本 198
8.5 構建檔案的哲學 200
8.5.1 一開始就要把結果放在心上 200
8.5.2 將測試納入構建 200
8.5.3 支持自動部署 200
8.5.4 使其可移植 200
8.5.5 允許用定製 201
8.6 小結 201
part 2 套用ant
第9章 在開發項目中使用ant 205
9.1 設計基於ant的構建過程 206
9.1.1 分析你的項目 206
9.1.2 建立核心構建檔案 208
9.1.3 完善構建檔案 208
9.2 移植到ant 209
9.3 移植的十個步驟 210
9.3.1 從基於make的項目移植 211
9.3.2 從基於ide的項目移植 211
9.4 主構建:管理大型項目 212
9.4.1 重構構建檔案 212
9.4.2 引入[ant]任務 213
9.4.3 示例:基本主構建檔案 213
9.4.4 設計可升級的靈活主構建檔案 215
9.5 管理子工程構建 221
9.5.1 如何控制子工程的特性 221
9.5.2 從主構建檔案中繼承特性和引用 223
9.5.3 在[ant]里聲明特性和引用 224
9.5.4 通過xml檔案片斷共享特性 225
9.5.5 使用xml檔案片斷共享目標 227
9.6 創建可重用的庫構建檔案 228
9.7 展望未來:讓大型項目支持演化 230
9.8 ant項目的最佳實踐 231
9.8.1 管理庫 232
9.8.2 實現過程 232
9.9 小結 233
第10章 超越ant的核心任務 234
10.1 理解任務的種類 235
10.1.1 那么,什麼是“可選”任務 235
10.1.2 ant的主要可選任務 236
10.1.3 為什麼需要第三方任務 237
10.2 可選任務實際演練 237
10.2.1 操控特性檔案 237
10.2.2 為構建期間添加音頻反饋和視覺反饋 239
10.2.3 添加依賴關係檢查 241
10.2.4 用javacc進行語法解析 243
10.2.5 置換正則表達式 244
10.3 使用軟體配置管理任務 245
10.3.1 cvs 245
10.3.2 clearcase 246
10.4 使用第三方任務 247
10.4.1 用[taskdef]定義任務 247
10.5 幾個知名的第三方任務 248
10.5.1 checkstyle 248
10.5.2 torque—對象-關係映射 250
10.6 ant-contrib任務 253
10.7 項目間共享任務定義 258
10.8 最佳實踐 258
10.9 小結 259
第11章 xdoclet 260
11.1 安裝xdoclet 261
11.2 生成to-do列表 261
11.3 xdoclet的體系結構 262
11.3.1 xdoclet的ant任務 263
11.3.2 模板化 264
11.3.3 xdoclet如何工作 265
11.4 編寫自己的xdoclet模板 265
11.4.1 代碼生成 267
11.4.2 按類生成與單檔案生成的比較 272
11.4.3 過濾要處理的類 273
11.5 高級xdoclet 273
11.5.1 定製子任務 274
11.5.2 建立定製標記處理器 274
11.6 xdoclet的發展方向 275
11.6.1 xdoclet與c#的比較 275
11.6.2 展望java的未來:jsr175和jsr181 276
11.7 xdoclet最佳實踐 276
11.7.1 依賴關係檢查 276
11.8 小結 277
第12章 web開發 278
12.1 web應用程式有什麼不同 279
12.2 使用標記庫 280
12.2.1 建立標記庫 280
12.2.2 集成標記庫 286
12.2.3 使用ant開發標記庫小結 287
12.3 編譯jsp網頁 288
12.3.1 安裝[jspc]任務 289
12.3.2 使用[jspc]任務 289
12.3.3 為部署而編譯jsp 291
12.3.4 其他jsp編譯任務 292
12.4 定製web應用程式 292
12.4.1 基於filterset的定製 292
12.4.2 利用xdoclet定製部署描述檔案 294
12.4.3 定製war檔案中的庫 297
12.5 生成靜態內容 297
12.5.1 生成新內容 297
12.5.2 建立新檔案 298
12.5.3 修改既有檔案 299
12.6 使用httpunit測試web應用程式 299
12.6.1 編寫httpunit測試 300
12.6.2 編譯測試 302
12.6.3 準備從ant中運行httpunit測試 303
12.6.4 運行httpunit測試 303
12.6.5 整合測試 304
12.6.6 httpunit的局限性 306
12.6.7 canoo webtest 306
12.7 利用cactus進行伺服器端測試 310
12.7.1 從ant視角看cactus 311
12.7.2 cactus如何運作 313
12.7.3 我們的測試用例登場了 314
12.7.4 cactus小結 314
12.8 小結 315
第13章 使用xml 317
13.1 導言:關於xml庫 318
13.2 驗證xml 319
13.2.1 當檔案不合法的時候 320
13.2.2 解析xml dtds 321
13.2.3 支持其他的xml驗證機制 322
13.3 利用xslt轉換xml 323
13.3.1 使用xml catalog datatype 325
13.3.2 由xml生成pdf檔案 327
13.3.3 styler——一個第三方的轉換任務 327
13.4 生成xml格式的構建日誌 327
13.4.1 樣式表 328
13.4.2 輸出檔案 329
13.4.3 構建日誌的後處理 330
13.5 將xml數據載入ant特性 331
13.6 xml處理的將來 332
13.7 小結 332
第14章 enterprise javabeans 333
14.1 ejb概述 333
14.1.1 enterprise javabeans的多種類型 334
14.1.2 ejb jar 334
14.1.3 廠商相關的情形 335
14.2 一個簡單的ejb構建 335
14.3 使用ant的ejb任務 336
14.4 使用[ejbjar] 337
14.4.1 廠商相關的[ejbjar]處理 339
14.5 使用xdoclet進行ejb開發 340
14.5.1 xdoclet子任務 341
14.5.2 xdoclet的@標記 342
14.5.3 利用xdoclet支持不同的套用伺服器 343
14.5.4 ant特性替換 343
14.6 middlegen 345
14.7 部署到j2ee套用伺服器 348
14.8 一個完整的ejb例子 349
14.9 ejb工程的最佳實踐 354
14.10 小結 354
第15章 使用web服務 355
15.1 何謂web服務,何謂soap 356
15.1.1 soap api 357
15.1.2 向java增加web服務能力 357
15.2 用ant創建一個soap客戶端應用程式 357
15.2.1 準備我們的構建檔案 358
15.2.2 創建代理類 359
15.2.3 使用soap代理類 361
15.2.4 編譯soap客戶端 361
15.2.5 運行soap服務 362
15.2.6 回顧soap客戶端創建 363
15.3 用axis和ant創建一個soap服務 363
15.3.1 構建web服務的簡單方法 364
15.4 向既有web應用程式添加web服務 367
15.4.1 配置web應用程式 367
15.4.2 添加庫 368
15.4.3 在構建中包含soap服務 368
15.4.4 測試伺服器上的需要類 369
15.4.5 實現soap端點 370
15.4.6 部署web服務 370
15.5 為soap服務編寫客戶端 371
15.5.1 導入wsdl 371
15.5.2 實現測試 372
15.5.3 編寫java客戶端 375
15.6 什麼是互操作,為什麼它成其為問題 376
15.7 構建一個c#客戶端 376
15.7.1 條件探測 377
15.7.2 在c#中導入wsdl 378
15.7.3 編寫c#客戶端類 379
15.7.4 構建c#客戶端 379
15.7.5 運行c#客戶端 380
15.7.6 回顧c#客戶端的構建過程 381
15.8 構建web服務的嚴格方法 381
15.9 回顧web服務開發 382
15.10 通過soap調用ant 383
15.11 小結 384
第16章 持續集成 386
16.1 利用作業系統調度ant構建 387
16.1.1 windows方法 387
16.1.2 unix 版本 388
16.1.3 使用腳本 388
16.2 cruisecontrol 388
16.2.1 它如何工作 389
16.2.2 這就是cruise——讓構建管理器工作起來 389
16.2.3 報告構建日誌 395
16.2.4 郵件通知與構建標註 396
16.2.5 cruisecontrol小結 396
16.2.6 提示與技巧 396
16.2.7 cruisecontrol的優點和缺點 396
16.3 anthill 397
16.3.1 讓anthill轉起來 398
16.3.2 anthill是如何工作的 399
16.3.3 anthill小結 400
16.4 gump 401
16.4.1 安裝和運行gump 401
16.4.2 gump如何運作 403
16.4.3 gump小結 404
16.5 持續集成工具的比較 405
16.6 小結 406
第17章 開發本地代碼 407
17.1 本地代碼的挑戰 407
17.2 使用既有的構建工具 408
17.2.1 交給ide去做 408
17.2.2 使用make 409
17.3 引入[cc]任務 410
17.3.1 安裝任務 410
17.3.2 添加一個編譯器 411
17.3.3 [cc]任務快速入門 411
17.4 在ant中構建一個jni庫 412
17.4.1 構建jni庫的步驟 413
17.4.2 編寫java存根(stub) 414
17.4.3 編寫c++類 415
17.4.4 編譯c++原始碼 416
17.4.5 部署和測試庫 419
17.5 實現跨平台 422
17.5.1 移植c++源檔案 422
17.5.2 擴展構建檔案 423
17.5.3 移植測試 424
17.5.4 移植代碼 424
17.6 深入[cc]的細節 425
17.6.1 定義預處理宏 425
17.6.2 通過[libset]連結到庫 426
17.6.3 配置編譯器和連結器 427
17.6.4 定製連結器 428
17.7 發布本地庫 429
17.8 小結 430
第18章 成品部署 431
18.1 不同套用伺服器的挑戰 432
18.1.1 迥然不同的底層行為 432
18.1.2 不同的java運行時行為 433
18.1.3 使用不同的api實現進行複製 434
18.1.4 與供應商相關的庫 436
18.1.5 部署描述檔案 436
18.1.6 與伺服器相關的部署過程 436
18.1.7 與伺服器相關的管理 436
18.2 與操作員齊心協力 437
18.2.1 操作員用例 437
18.2.2 操作員測試 437
18.2.3 操作員缺陷跟蹤 438
18.2.4 將操作員與構建過程集成 438
18.3 利用ant迎接部署的挑戰 440
18.3.1 建立單一的原始碼樹 440
18.3.2 為創建檔案檔案而編寫統一的目標 440
18.3.3 運行伺服器端ant進行部署 441
18.3.4 自動化上載和部署過程 442
18.4 ant的強大部署工具介紹 442
18.4.1 [copy]任務 442
18.4.2 [serverdeploy]任務 443
18.4.3 使用[telnet]進行遠程控制 443
18.5 建立一個成品的部署過程 446
18.5.1 計畫 446
18.5.2 目錄結構 447
18.5.3 配置檔案 447
18.5.4 構建檔案 447
18.5.5 遠程構建檔案build.xml 447
18.5.6 為安裝到伺服器編寫構建檔案 449
18.5.7 上載至遠程伺服器 450
18.5.8 讓遠程部署轉起來 454
18.5.9 對部署過程進行回顧 455
18.6 部署至特定套用伺服器 456
18.6.1 tomcat 4.0 和 tomcat 4.1 456
18.6.2 bea weblogic 458
18.6.3 hp bluestone 套用伺服器 458
18.6.4 其他伺服器 459
18.7 驗證部署 459
18.7.1 創建時間戳檔案 460
18.7.2 將時間戳檔案添加到應用程式中 460
18.7.3 測試時間戳 462
18.8 最佳實踐 462
18.9 小結 463
part 3 擴展ant
第19章 編寫ant任務 467
19.1 什麼是一個真正的ant任務 468
19.1.1 世界上最簡單的ant任務 468
19.1.2 在同一個構建過程中編譯和套用一個任務 469
19.1.3 任務的生命周期 469
19.2 ant api 入門 470
19.2.1 task 470
19.2.2 project 471
19.2.3 path 472
19.2.4 fileset 472
19.2.5 directoryscanner 472
19.2.6 enumeratedattribute 473
19.2.7 fileutils 473
19.3 任務如何獲得數據 474
19.3.1 設定屬性 474
19.3.2 支持嵌套元素 480
19.3.3 支持datatypes 481
19.3.4 允許自由格式文本 482
19.4 建立一個基本的ant task子類 483
19.4.1 為任務添加屬性 483
19.4.2 處理元素文本 484
19.5 操作fileset 485
19.6 錯誤處理 486
19.7 測試ant任務 487
19.8 執行外部程式 487
19.8.1 處理進程輸出 490
19.8.2 本地執行小結 490
19.9 在任務中執行java程式 490
19.9.1 創建java程式新進程的示例 490
19.10 支持任意命名的元素和屬性 493
19.11 構建任務庫 495
19.12 支持多版本ant 497
19.13 小結 497
第20章 進一步擴展ant 498
20.1 在ant中使用腳本 499
20.1.1 [script]約定的隱含對象 500
20.1.2 腳本使用小結 501
20.2 監聽者與日誌工具 502
20.2.1 編寫一個定製監聽者 503
20.2.2 使用log4j的日誌功能 506
20.2.3 編寫一個定製日誌工具 509
20.2.4 使用maillogger 513
20.3 開發定製的mapper 514
20.4 創建定製的selector 515
20.4.1 在構建中使用定製selector 516
20.5 實現定製的filter 517
20.5.1 編寫定製filter的reader 519
20.6 小結 520
附錄a 安裝 523
附錄b ant之xml入門 532
附錄c ide集成 536
附錄d ant風格的要素 544
附錄e ant任務參考 562
資源 621
索引 625

相關詞條

熱門詞條

聯絡我們