词条 | 使用Ant进行Java开发 |
释义 | 基本信息原书名: Java Development With Ant 原出版社: Manning Publications 作者: Erik Hatcher,Steve Loughran译者: 刘永丹 出版社:电子工业出版社 ISBN:7121016834 上架时间:2005-9-27 出版日期:2005 年9月 开本:16开 页码:672 版次:1-1 内容简介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 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。