当前位置:首页 > 工业技术
使用Ant进行Java开发
使用Ant进行Java开发

使用Ant进行Java开发PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:(美)Erik Hatcher,(美)Steve Loughran著;刘永丹,陈洋译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121016834
  • 页数:634 页
图书介绍:Ant,一个备受赞誉的Java构建工具。它以其易于使用、与平台无关、迎合如今项目自动测试和自动部署的需要,成为许多项目构建过程的重要环节。目前它已成为所有主要开源Java项目采用的独立工具,并已成了事实上的标准。本书作者是被SAM RUBY先生誉为“两个最了解Ant的人”。他们将以最佳的方式给你讲授Ant,从一个简单的构建定义开始,然后展示加入你的项目所需的那些功能。如果你是一个初学Ant的人,本书将系统带你领略大多数Java项目都要经历的核心步骤:编译、测试、执行、打包以及分发。如果你是一个富有经验的Ant用户,本书能教你如何使用Ant“增强系统的能力”。所以不管你使用Ant的经验如何,都能从本书中学到很多东西,你的软件项目也将因为使用Ant作为构建过程的基础而受益匪浅。本书分为三个部分,第1部分提供了Ant及其功能的基础知识。第2部分,每章讨论一个专题,在其中探讨了多种项目,并介绍了Ant在其中扮演的关键角色。第3部分是为那些想突破既有能力限制的高级用户撰写的内容。
《使用Ant进行Java开发》目录

Part 1 学习Ant 1

1.1 何为Ant 3

第1章 Ant简介 3

1.1.2 为什么我们认为Ant是一个优秀的构建工具 4

1.1.1 何为构建过程,我们为什么需要它 4

1.2 Ant的核心概念 5

1.2.1 示例工程 7

1.3.1 集成开发环境 10

1.3 为什么要使用ANT 10

1.3.2 Make 11

1.3.3 其他构建工具 13

1.4 Ant的演化史 14

1.3.4 立刻就来运行吧 14

1.5.1 XP(eXtreme Programming) 16

1.5 Ant与软件开发方法 16

1.6 示例工程 17

1.5.2 Rational统一过程 17

1.6.1 文档搜索引擎—Ant示例工程 18

1.7 太棒了,可是ANT能否 19

1.8.3 Microsoft.NET以及其他语言 21

1.8.2 简单的工作流引擎 21

1.8 超越JAVA开发 21

1.8.1 Web发布引擎 21

1.9 小结 22

2.1 定义我们的第一个工程 23

第2章 开始Ant之旅 23

2.3 第二步:编写你的第一个Ant构建文件 24

2.2 第一步:检查工具是否已经就绪 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.5 目标依赖 35

2.5.4 创建构建文件 35

2.5.6 运行新的构建文件 36

2.5.7 重新运行构建 37

2.5.8 Ant如何处理命令行上的多个目标 38

2.6.1 为什么要在Ant内部运行 39

2.6 第五步:运行我们的程序 39

2.6.3 运行新的目标 40

2.6.2 添加执行目标 40

2.7 ANT命令行选项 41

2.7.2 控制所提供的信息量 42

2.7.1 指定要运行的构建 42

2.8 最终的构建文件 44

2.7.3 获取项目信息 44

2.9 小结 46

第3章 理解Ant的datatypes和特性 47

3.1.2 特性概述 48

3.1.1 Datatype概述 48

3.1 入门 48

3.2 通过〈JAVAC〉介绍DATATYPE和特性 49

3.3 路径(Path) 51

3.4 文件集(Fileset) 52

3.4.2 默认排除项(Default excludes) 53

3.4.1 文件集举例 53

3.5 模式集(Patternset) 54

3.6 选择器(Selector) 56

3.7 DATATYPE元素命名 57

3.8.1 构建运行时在文件中插入日期戳 58

3.8 过滤集(Filterset) 58

3.9 过滤链(filterchain)和过滤阅读器(FilterReader) 59

3.10.1 Identity映射器 61

3.10 Mapper 61

3.10.3 Merge映射器 62

3.10.2 Flatten映射器 62

3.10.5 Regexp映射器 63

3.10.4 Glob映射器 63

3.10.6 Package映射器 64

3.11.3 Filelist 65

3.11.2 Dirset 65

3.11 其他ANT DATATYPE 65

3.11.1 ZipFileset 65

3.12 特性(Property) 66

3.11.4 ClassFileset 66

3.12.1 通过〈property〉任务设置特性 67

3.12.3 检查资源的可用性:〈available〉 70

3.12.2 〈property〉任务怎样区别于其他任务 70

3.12.5 用〈condition〉测试条件 72

3.12.4 忽略不必要的步骤:〈uptodate〉以节省时间 72

3.12.6 在命令行中设置特性 74

3.12.7 用〈tstamp〉创建构建的时间戳 75

3.12.8 从XML文件中载入特性 76

3.13.1 有条件地执行target 77

3.13 使用特性控制Ant 77

3.13.3 有条件的构建失败 78

3.13.2 有条件的patternset包含/排除(inclusion/exclusion) 78

3.14 引用 79

3.14.1 特性和引用 80

3.14.2 为嵌套的模式集使用引用 81

3.15 最佳实践 82

3.16 小结 83

第4章 使用JUnit进行测试 85

4.2 JAVA MAIN()测试 86

4.1 重构(Refactoring) 86

4.3 JUNIT入门 87

4.3.3 断言预期的结果 88

4.3.2 运行测试用例 88

4.3.1 编写测试用例 88

4.3.5 编写测试组件 90

4.3.4 测试用例生命周期 90

4.3.7 扩展JUnit 91

4.3.6 获取及安装JUnit 91

4.4.1 先编写测试 92

4.4 在我们的应用程序中使用单元测试 92

4.4.2 在测试过程中处理外部资源 93

4.5.1 组织目录以安放测试 94

4.5 JUNIT任务—〈JUNIT〉 94

4.5.2 配置JUnit到构建过程 95

4.6.1 捕获测试结果 97

4.6 测试失败意味着构建失败 97

4.6.2 运行多重测试 99

4.7 生成测试结果报告 100

4.6.3 创建你自己的结果(result)formatter 100

4.7.1 生成报告且允许当测试失败时中止构建 102

4.7.3 初始化测试环境 103

4.7.2 从命令行运行单个测试用例 103

4.7.4 其他测试问题 104

4.8 短路测试 105

4.8.1 处理大量测试 108

4.9 最佳实践 109

4.10 小结 110

5.1 为什么需要运行外部程序 111

第5章 运行程序 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.7 控制新JVM 118

5.2.6 设置环境变量 118

5.2.8 使用failonerror处理错误 119

5.2.9 执行JAR文件 120

5.2.10 调用第三方程序 121

5.2.11 在调用之前探查Java程序 123

5.3 使用〈EXEC〉启动本地程序 124

5.2.12 设置超时 124

5.3.2 处理错误 126

5.3.1 设置环境变量 126

5.3.4 制作并运行一个shell命令 127

5.3.3 处理超时 127

5.3.5 在程序被调用之前进行探测 129

5.4 使用〈apply〉进行批量执行 130

5.5 处理输出 131

5.7 最佳实践 132

5.6 执行的限制 132

5.8 小结 133

第6章 工程打包 134

6.1.1 如何删除文件 135

6.1 移动、复制和删除文件 135

6.1.2 怎样复制文件 136

6.1.3 如何移动文件 137

6.1.4 过滤 138

6.2.1 构建发布代码及其文档 139

6.2 为打包做准备 139

6.2.2 加入数据文件 141

6.2.3 准备编制文档 142

6.2.4 准备安装脚本和文档 143

6.2.5 为重发布准备库 145

6.3 创建存档文件 146

6.3.2 创建一个JAR文件 148

6.3.1 JAR文件 148

6.3.3 测试JAR文件 149

6.3.4 创建JAR清单 150

6.3.7 签署JAR文件 152

6.3.6 JAR文件的最佳实践 152

6.3.5 向JAR中增加额外元数据 152

6.4.1 创建二进制发布 154

6.4 创建ZIP文件 154

6.4.2 创建源代码发布 156

6.4.4 Zip文件的最佳实践 157

6.4.3 合并Zip文件 157

6.5 创建TAR文件 158

6.6 使用WAR文件创建WEB应用程序 160

6.7 打包测试 161

6.8 小结 162

第7章 部署 163

7.1.2 部署所用的工具 164

7.1.1 再看这些任务 164

7.1 典型部署问题 164

7.2 用于部署的任务 165

7.2.2 探测服务器的有效性 166

7.2.1 使用〈ftp〉进行文件传输 166

7.2.3 使用〈sleep〉让构建暂停 168

7.2.4 Ant的email任务 169

7.2.5 使用〈get〉获取远程文件 170

7.3 基于FTP的打包应用程序发布 171

7.2.6 使用任务进行部署 171

7.3.1 通过〈input〉任务获得信息 172

7.4 基于Email的打包应用程序发布 173

7.5 本地部署到Tomcat4.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.8 小结 187

7.7 对部署进行测试 187

8.1 我们目前的应用程序 188

第8章 综合运用Ant 188

8.2 构建定制的Ant任务库 189

8.3 载入跨工程的共用特性 194

8.4 处理版本依赖 196

8.4.1 安装库的新版本 198

8.5.4 使其可移植 200

8.5.3 支持自动部署 200

8.5 构建文件的哲学 200

8.5.1 一开始就要把结果放在心上 200

8.5.2 将测试纳入构建 200

8.6 小结 201

8.5.5 允许用定制 201

Part 2 应用Ant 203

第9章 在开发项目中使用Ant 205

9.1.1 分析你的项目 206

9.1 设计基于Ant的构建过程 206

9.1.3 完善构建文件 208

9.1.2 建立核心构建文件 208

9.2 移植到ANT 209

9.3 移植的十个步骤 210

9.3.2 从基于IDE的项目移植 211

9.3.1 从基于Make的项目移植 211

9.4.1 重构构建文件 212

9.4 主构建:管理大型项目 212

9.4.3 示例:基本主构建文件 213

9.4.2 引入〈ant〉任务 213

9.4.4 设计可升级的灵活主构建文件 215

9.5.1 如何控制子工程的特性 221

9.5 管理子工程构建 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.2 实现过程 232

9.8.1 管理库 232

9.9 小结 233

第10章 超越Ant的核心任务 234

10.1.1 那么,什么是“可选”任务 235

10.1 理解任务的种类 235

10.1.2 Ant的主要可选任务 236

10.2.1 操控特性文件 237

10.2 可选任务实际演练 237

10.1.3 为什么需要第三方任务 237

10.2.2 为构建期间添加音频反馈和视觉反馈 239

10.2.3 添加依赖关系检查 241

10.2.4 用JavaCC进行语法解析 243

10.2.5 置换正则表达式 244

10.3.1 CVS 245

10.3 使用软件配置管理任务 245

10.3.2 ClearCase 246

10.4.1 用〈taskdef〉定义任务 247

10.4 使用第三方任务 247

10.5.1 Checkstyle 248

10.5 几个知名的第三方任务 248

10.5.2 Torque—对象-关系映射 250

10.6 ANT-CONTRIB任务 253

10.7 项目间共享任务定义 258

10.8 最佳实践 258

10.9 小结 259

第11章 XDoclet 260

11.2 生成TO-DO列表 261

11.1 安装XDoclet 261

11.3 XDoclet的体系结构 262

11.3.1 XDoclet的Ant任务 263

11.3.2 模板化 264

11.4 编写自己的XDoclet模板 265

11.3.3 XDoclet如何工作 265

11.4.1 代码生成 267

11.4.2 按类生成与单文件生成的比较 272

11.5 高级XDoclet 273

11.4.3 过滤要处理的类 273

11.5.2 建立定制标记处理器 274

11.5.1 定制子任务 274

11.6.1 XDoclet与C#的比较 275

11.6 XDoclet的发展方向 275

11.7.1 依赖关系检查 276

11.7 XDoclet最佳实践 276

11.6.2 展望Java的未来:JSR175和JSR181 276

11.8 小结 277

第12章 web开发 278

12.1 WEB应用程序有什么不同 279

12.2.1 建立标记库 280

12.2 使用标记库 280

12.2.2 集成标记库 286

12.2.3 使用Ant开发标记库小结 287

12.3 编译JSP网页 288

12.3.2 使用〈jspc〉任务 289

12.3.1 安装〈jspc〉任务 289

12.3.3 为部署而编译JSP 291

12.4.1 基于filterset的定制 292

12.4 定制web应用程序 292

12.3.4 其他JSP编译任务 292

12.4.2 利用XDoclet定制部署描述文件 294

12.5.1 生成新内容 297

12.5 生成静态内容 297

12.4.3 定制WAR文件中的库 297

12.5.2 建立新文件 298

12.6 使用HTTPNIT测试WEB应用程序 299

12.5.3 修改既有文件 299

12.6.1 编写HttpUnit测试 300

12.6.2 编译测试 302

12.6.4 运行HttpUnit测试 303

12.6.3 准备从Ant中运行HttpUnit测试 303

12.6.5 整合测试 304

12.6.7 Canoo WebTest 306

12.6.6 HttpUnit的局限性 306

12.7 利用CACTUS进行服务器端测试 310

12.7.1 从Ant视角看Cactus 311

12.7.2 Cactus如何运作 313

12.7.4 Cactus小结 314

12.7.3 我们的测试用例登场了 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.4 生成XML格式的构建日志 327

13.3.3 Styler——一个第三方的转换任务 327

13.3.2 由XML生成PDF文件 327

13.4.1 样式表 328

13.4.2 输出文件 329

13.4.3 构建日志的后处理 330

13.5 将XML数据载入Ant特性 331

13.7 小结 332

13.6 XML处理的将来 332

14.1 EJB概述 333

第14章 Enterprise JavaBeans 333

14.1.2 EJB JAR 334

14.1.1 Enterprise JavaBeans的多种类型 334

14.2 一个简单的EJB构建 335

14.1.3 厂商相关的情形 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.4 Ant特性替换 343

14.5.3 利用XDoclet支持不同的应用服务器 343

14.6 MIDDLEGEN 345

14.7 部署到J2EE应用服务器 348

14.8 一个完整的EJB例子 349

14.10 小结 354

14.9 EJB工程的最佳实践 354

第15章 使用Web服务 355

15.1 何谓Web服务,何谓SOAP 356

15.2 用Ant创建一个SOAP客户端应用程序 357

15.1.2 向Java增加Web服务能力 357

15.1.1 SOAPAPI 357

15.2.1 准备我们的构建文件 358

15.2.2 创建代理类 359

15.2.4 编译SOAP客户端 361

15.2.3 使用SOAP代理类 361

15.2.5 运行SOAP服务 362

15.3 用Axis和Ant创建一个SOAP服务 363

15.2.6 回顾SOAP客户端创建 363

15.3.1 构建Web服务的简单方法 364

15.4.1 配置Web应用程序 367

15.4 向既有Web应用程序添加Web服务 367

15.4.3 在构建中包含SOAP服务 368

15.4.2 添加库 368

15.4.4 测试服务器上的需要类 369

15.4.6 部署Web服务 370

15.4.5 实现SOAP端点 370

15.5.1 导入WSDL 371

15.5 为SOAP服务编写客户端 371

15.5.2 实现测试 372

15.5.3 编写Java客户端 375

15.7 构建一个C#客户端 376

15.6 什么是互操作,为什么它成其为问题 376

15.7.1 条件探测 377

15.7.2 在C#中导入WSDL 378

15.7.4 构建C#客户端 379

15.7.3 编写C#客户端类 379

15.7.5 运行C#客户端 380

15.8 构建Web服务的严格方法 381

15.7.6 回顾C#客户端的构建过程 381

15.9 回顾Web服务开发 382

15.10 通过SOAP调用Ant 383

15.11 小结 384

第16章 持续集成 386

16.1.1 Windows方法 387

16.1 利用操作系统调度Ant构建 387

16.2 CRUISECONTROL 388

16.1.3 使用脚本 388

16.1.2 Unix版本 388

16.2.2 这就是Cruise——让构建管理器工作起来 389

16.2.1 它如何工作 389

16.2.3 报告构建日志 395

16.2.7 CruiseControl的优点和缺点 396

16.2.6 提示与技巧 396

16.2.4 邮件通知与构建标注 396

16.2.5 CruiseControl小结 396

16.3 ANTHILL 397

16.3.1 让Anthill转起来 398

16.3.2 Anthill是如何工作的 399

16.3.3 Anthill小结 400

16.4.1 安装和运行Gump 401

16.4 GUMP 401

16.4.2 Gump如何运作 403

16.4.3 Gump小结 404

16.5 持续集成工具的比较 405

16.6 小结 406

17.1 本地代码的挑战 407

第17章 开发本地代码 407

17.2.1 交给IDE去做 408

17.2 使用既有的构建工具 408

17.2.2 使用Make 409

17.3.1 安装任务 410

17.3 引入〈CC〉任务 410

17.3.3 〈cc〉任务快速入门 411

17.3.2 添加一个编译器 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.1 移植C++++源文件 422

17.5 实现跨平台 422

17.5.2 扩展构建文件 423

17.5.4 移植代码 424

17.5.3 移植测试 424

17.6.1 定义预处理宏 425

17.6 深入〈CC〉的细节 425

17.6.2 通过〈libset〉链接到库 426

17.6.3 配置编译器和链接器 427

17.6.4 定制链接器 428

17.7 发布本地库 429

17.8 小结 430

第18章 成品部署 431

18.1.1 迥然不同的底层行为 432

18.1 不同应用服务器的挑战 432

18.1.2 不同的Java运行时行为 433

18.1.3 使用不同的API实现进行复制 434

18.1.7 服务器相关的管理 436

18.1.6 与服务器相关的部署过程 436

18.1.4 与供应商相关的库 436

18.1.5 部署描述文件 436

18.2.2 操作员测试 437

18.2.1 操作员用例 437

18.2 与操作员齐心协力 437

18.2.4 将操作员与构建过程集成 438

18.2.3 操作员缺陷跟踪 438

18.3.2 为创建档案文件而编写统一的目标 440

18.3.1 建立单一的源代码树 440

18.3 利用Ant迎接部署的挑战 440

18.3.3 运行服务器端Ant进行部署 441

18.4.1 〈copy〉任务 442

18.4 ANT的强大部署工具介绍 442

18.3.4 自动化上载和部署过程 442

18.4.3 使用〈telnet〉进行远程控制 443

18.4.2 〈serverdeploy〉任务 443

18.5.1 计划 446

18.5 建立一个成品的部署过程 446

18.5.5 远程构建文件build.xml 447

18.5.4 构建文件 447

18.5.2 目录结构 447

18.5.3 配置文件 447

18.5.6 为安装到服务器编写构建文件 449

18.5.7 上载至远程服务器 450

18.5.8 让远程部署转起来 454

18.5.9 对部署过程进行回顾 455

18.6.1 Tomcat 4.0和Tomcat 4.1 456

18.6 部署至特定应用服务器 456

18.6.3 HP Bluestone应用服务器 458

18.6.2 BEA WebLogic 458

18.7 验证部署 459

18.6.4 其他服务器 459

18.7.2 将时间戳文件添加到应用程序中 460

18.7.1 创建时间戳文件 460

18.8 最佳实践 462

18.7.3 测试时间戳 462

18.9 小结 463

Part 3 扩展Ant 465

第19章 编写Ant任务 467

19.1.1 世界上最简单的Ant任务 468

19.1 什么是一个真正的Ant任务 468

19.1.3 任务的生命周期 469

19.1.2 在同一个构建过程中编译和应用一个任务 469

19.2.1 Task 470

19.2 Ant API入门 470

19.2.2 Project 471

19.2.5 DirectoryScanner 472

19.2.4 Fileset 472

19.2.3 Path 472

19.2.7 FileUtils 473

19.2.6 EnumeratedAttribute 473

19.3.1 设置属性 474

19.3 任务如何获得数据 474

19.3.2 支持嵌套元素 480

19.3.3 支持datatypes 481

19.3.4 允许自由格式文本 482

19.4.1 为任务添加属性 483

19.4 建立一个基本的Ant Task子类 483

19.4.2 处理元素文本 484

19.5 操作FILESET 485

19.6 错误处理 486

19.8 执行外部程序 487

19.7 测试Ant任务 487

19.9.1 创建Java程序新进程的示例 490

19.9 在任务中执行Java程序 490

19.8.1 处理进程输出 490

19.8.2 本地执行小结 490

19.10 支持任意命名的元素和属性 493

19.11 构建任务库 495

19.13 小结 497

19.12 支持多版本Ant 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

相关图书
作者其它书籍
返回顶部