您的浏览历史

ANT IN ACTION 第2版 中文版 (china-pub 首发)

促销活动

基本信息

编辑推荐

本书是一本使用Ant进行构建、测试、发布和部署Java项目的完全指南。它是广受赞誉的最佳畅销书《Java Development with Ant》的第2版。与第1版相比,这本书中包含超过了50%的新内容:Ant 1.7的新特性、针对大项目的可伸缩构建、持续集成技术、部署、管理库、扩展Ant。

内容简介回到顶部↑

本书介绍了如何使用Ant 1.7去构建、测试、部署现代的Java应用程序,进行测试驱动的Java应用开发,本书还覆盖了一些最新式的构建技术,包括库管理、持续整合及自动化部署。本书将向你全面介绍大多数Java项目的核心步骤:编译、测试、执行、打包和交付,并告诉你一些“超越极限”的Ant使用方法。贯穿全书,作者通过一个应用程序的逐步完善和复杂,来展现应用如何进展,以及如何解决构造和测试的问题。该书涵盖了大量项目实例,先进的性能特征以及在别的地方难以获得的详细深入的讨论。这本书适合所有Java开发者,即使是Java新手,结合Ant来学习Java也能获得额外的收获。

作译者回到顶部↑

本书提供作译者介绍

Steve Loughran是Ant和Apache软件基金会的成员。他是HP实验室的研究科学家。

Erik Hatcher是Ant的成员,另一本Manning的畅销书《Lucene in Action》的合著者。
.. << 查看详细

目录回到顶部↑

第2版序言
第1版前言
第1版序言
致谢
关于本书
关于作者
关于封面
第0章 第2版的欢迎仪式
PART 1 Ant入门
第1章 Ant介绍
第2章 初识Ant构建
第3章 理解Ant的Datatype和特征
第4章 使用JUnit进行单元测试
第5章 工程打包
第6章 执行程序
第7章 应用程序发布
第8章 综合使用Ant
PART 2 应用Ant
第9章 超越Ant的核心任务
第10章 处理大型项目

译者序回到顶部↑

自从两年前偶然拜读了大野耐一先生的著作——《丰田生产方式》后,我发现自己变成了一个彻头彻尾的“工具主义者”。当然,我无意要与哲学中的“实用主义”派系相混淆,尽管它们之间有诸多相似之处。工具越聪明,它能替人类完成的事情就越多。我们不妨来看看在丰田公司,工具(机器)是如何运作的:.
“操作人员仅是负责保证质量,只有少数几个人负责拧螺钉或组装部件。机器人负担了全部工作,甚至驾驶着拉材料的小卡车满楼道跑,遇到通道上有人就发出‘嘟嘟嘟’声让你走开。……机器人为每辆凌志车前方挡风玻璃贴橡皮密封条,机器人手臂仔细地将融化的橡胶涂在前面方形的窗口周围……每当完成此项工作后,它的手指上经常留着一丁点儿橡胶,就如我们往牙刷上挤牙膏时,牙膏管口留下一点牙膏一样。这时,机器人的手指尖在碰到一根细得几乎看不见的金属线时就会停下,该线将残留在手指间那点滚烫的黑色橡胶刮下来——一切做得那么干净利落。我瞪着双眼看着这一过程……”
这段文字摘自托马斯.弗里德曼的《“凌志汽车”和“橄榄树”的视角》一书。它描述的是丰田公司1992时的厂房情景。在丰田公司的车间里,机器的数量远远多于工人。如果你还记得电影“摩登时代”中的卓别林的身体随着齿轮转动的场景的话,就会更加强烈地感受到彼此的不同。
“工具”在人类发展的历史中,是一个不可忽视的角色。人类的每一点进步,都伴随着新工具的出现,它可以完成那些原本需要由人来完成的事情,从而进一步地释放人类的自由和智慧。
在计算机软件开发的领域中,同样存在着这种现象。
作为一名开发人员,你每天花在配置环境,以及测试、发布、部署软件的时间有多少?是不是经常因为一个配置问题而导致进度停滞不前?开发软件这项工作,真正能带来价值的是编写新代码、添加新功能。而配置、发布、部署这些功能,尽管很耗时、很复杂,但本质上是重复性的劳动,对开发人员的时间和智慧都是一种浪费。那么,为什么不把这些工作都交给机器和工具来完成呢?..
机器的时间比开发人员的时间要便宜的多。这是事实和趋势。从汇编语言被高级编程语言取代的那一刻起,历史的车轮就朝着这个方向行驶了。时间到了今天,软件的复杂度以及开发的难度已经达到了前所未有的高度,软件系统的构成涉及到大量组件之间的交互,因此“编码”占全部开发过程的比重越来越低,而让各种组件正常运作所花费的精力反而越来越多。对于开发者这是很可悲的,他们正在把自己的时间和智慧用在那些重复的、本应由机器自动完成的工作上。对于项目这也是可悲的,最昂贵的资源并没有被充分地利用。
幸运的是,今天已经出现了很多卓越的工具可以帮助开发者完成大量重复性的工作,而且具有高度的智能。本书介绍的Ant就是这些工具的一个杰出代表。几乎所有Java开发者都对Ant有着不同程度的理解,但是大多数人还停留在“需要时,临时复制一段配置文件来用”的阶段。但是,要发挥Ant的全部功能,仅仅这能种做法还不够;更重要的是,仅仅有Am还不够!Ant像是一个强大的引擎,带动起其他的工具,帮助开发者完成更多重复性的劳动。在这本书中,作者不仅介绍了Am的基础知识,也深入研究了Ant的高级特性。同时,作者还介绍了JUnit、HttpUnit、Cactus、Luntbuild、SmartFrog、Ivy等等,只有将这些工具有机地结合到一起,才能发挥出Ant的最大功效。
这个译本得以出版,离刁;开曹徐剑先生的鼎力相助,是你在我最困难(时间最紧迫)的时候,给了我很多的帮助。
最后,我想以下面的场景作为结束,这个场景对于很多公司来说还很遥远,但是,也有不少公司已经朝着它快速前进丁:
“开发者每天都把最多的时间花在代码的分析和编写上,而无需关心编译、打包和部署这些繁琐而不能产生价值的工作,因为这些工作都可以通过机器自动完成。每次开发者添加或修改了一些代码后,代码会在提交前运行所有的单元测试,在提交后会运行所有的,单元测试、回归测试和(或)验收测试。测试执行结束后,会生成一份清晰美观的报告,使开发人员可以清楚地掌握软件的健康状况。如果测试出现错误,构建过程会自动停止,并且各种手段通知开发者:停止当前的工作,立即修复错误。开发者每天都会很高兴地接受最有挑战的智力问题,而项目经理也会很高兴地看到,即使员工不加班,也可以写出出色的软件……”
其实,这不过是一个开始,还有更多的工具可以帮助我们完成任务,也还有更多的自动化可以实现。但是,Ant绝对是一个起点,一个坚实的起点。...
韩锴
2008.4

前言回到顶部↑

这本书是关于Ant的——一个朵膺了众多奖项的Java构建工具。由于Ant简单易用、平台无关,它已经成为很多项目构建过程的核心,并解决了当今项日自动化测试和部署的难题。最初,Ant只是编译Tomcat的辅助程序,后者是Apache的JavaWeb服务器,如今Ant已经成长为一个独立的工具了,多个Java社区都开始接受并使用它了,并且改变了人们对开发工具的期望。.
如果你以前从未使用过Ant,这本书会给你一个全面的介绍,带你系统地纵览一遍大多数Java项目的核心步骤:编译、测试、执行、打包和交付。如果你是一个有经验的Ant用户,我们将告诉你一些“超越极限(push the envelope)”的Ant使用方法。我们着重强调了如何把Ant用于大型项目中的一部分,并且分享了来自于我们自身经验的最佳实践。
无论你对Ant的经验如何,我们相信你都能从这本书中学到很多知识。坚持使用Ant作为构建、测试、发布应用程序的方法,你的软件项目将从中获得益处。
谁应该阅读本书
这本书适合所有Java开发者,无论他/她工作于简单的个人项日,还是多团队开发的企业级项目。我们假设读者以前没有使用Ant的经验。不过即使是有经验的Ant用户,也能够在后面的章节里发现很多有趣的内容。我们希望读者具有基本的Java知识,不过对于Java新手来说,结合Ant来学习Java能获得额外的收获。一些更高级的Ant项目,比如构建企业级Java应用程序、Web Service,主要会引起从事这些领域开发的人的兴趣。我们将会简单地介绍这些技术领域,但是你还要阅读其他书籍才能完全掌握它们。
这本书是如何组织的
我们将本书分为3部分。第1部分介绍了Ant的基础知识,并示范了如何构建、测试、打包和交付一个Java库:第2部分将第1部分的主题带入了更深的层次,解释了如何使用Ant解决特殊的问题,比如协调多个项目的构建,企业级应用的部署和测试:第3部分是个短小精湛的指南,告诉你如何使用脚本语言和Java代码扩展Ant,这样Ant就能满足每个项目自身特殊的需要了,甚至还可以把Ant嵌入到你的应用程序中。
第1部分
在第1章中,我们首先简单地介绍了Ant是什么、Ant不是什么,以及哪些因素使Ant成为Java项目中最佳的构建工具。
第2章关注Ant的语法和机制。我们以一个简单的项目为起点,它只编译了一个单独的Java文件,然后我们把这个项目集成到Ant的构建过程当中去了,它可以完成Java应用程序的编译、打包和执行。..
结束了第2章中简单的基础项目后,要想进一步了解Ant,就需要定义Ant的抽象机制。第3章介绍了Ant的特征和Datatype,这些使开发人员可以在构建文件的不同部分之间共享数据。这一章非常关键,在这里你会明白是什么令Ant如此引入注目。
Ant与以测试为核心的开发方式是相辅相成的,所以在第4章中,我们介绍JUnit的同时引入了示范的应用程序。从这—‘章开始,测试将是本书中不断被提及的主题。
第5章介绍了如何打包Java代码。结束这章后,在第6章中我们会看到在Ant中能够运行Java和本地程序。在第7章中,我们通过E-mail、FTP和SCP上载,将打包好的程序发布出去。
如果只看书中的各个代码片段,将很难想象出事物的全景。在第8章中,我们示范了一个单独的构建文件,它合并了前面各章介绍的所有阶段。第8章还讨论了在移植到Ant、接受一个更清晰的目录结构时可能遇到的问题,以及其他与使用Ant管理项目时相关的主题。第2部分
本书的第2部分从很多方面扩展了核心的构建过程,解决了不同的项目可能会遇到的问题。第9章展示了如何用可选的和第三方任务实现新的功能,比如从版本管理系统中签出文件、审查代码,以及在构建文件中加入迭代逻辑和错误处理器。
第10章展现了Ant在大型项目中的表现——如何通过多个子项目构建一个大型的项目。第11章是这一章的补充。第11章介绍了如何使用Ivy库解决库依赖管理的问题。利用Ivy管理你的库依赖关系,并把不同项目的输出粘合到一起,以此来保证Java项目(尤其是大型项目)的可控性。
今天,很多Java开发者都把他们的时间花在了Web开发上。第12章介绍了Web程序的打包、部署和测试的方法。你只有部署了Web应用程序后才能测试它,所以开发过程此时已经趋于复杂了。
第13章讨论了一个与大多数Java开发者相关的主题:XML。无论你是简单地将XML用于部署描述符,还是在构建过程中将文档文件转换为可表现的格式,你都能在本章中找到答案。
第14章是为那些从事企业级Java开发的人准备的;它介绍了如何实现应用程序的持久化,如何在JBoss应用服务器上部署,如何使用Apache Cactus进行测试。
第2部分的最后两章介绍了如何改进开发过程的方法。第15章介绍了持续集成,它的概念是:每当有新代码嵌入时,服务器可以自动构建并测试应用程序。第16章介绍了自动化部署。很多开发者都由于这样或那样的原因忽略了这个主题,但是它最终会回来找我们的麻烦。将部署自动化——这是可能的——将会改变Java项目构建、测试和部署的风貌。

序言回到顶部↑

啊!又有新的版本出现了么?这是开放开源软件项目的一个怪现象:快速发布的周期和开放的开发过程导致事情会很快发生变化——而且非常明显。在一个不开放源代码的项目中,罕有变化出现,除非到了每次新的发布出现之时:对于Ant这个开源软件来说,代码版本库中最新的代码会与书中的代码逐渐地产生不同。.
《Java Development with Ant》一书于2002年出版,同年Ant发布了1.5版本。而且两者都非常成功。于是Ant成为了人们构建和测试Java项目的主要工具。在本书中,我们将向您展示如何在一个大型项目中使用Ant,以及如何解决特定的问题。
Ant 1.6随后来到了。人们开始询问,如何改善大型构建的可扩展性。我们只能回答“Ant可以使它更容易”,却不能提出任何证据。同时,又有了很多其他有趣的技术出现,比如用于依赖关系管理的Ivy,以及用于部署和测试的各种工具,它们与Ant相映成趣。Java的开发过程正在发生巨变——现在到了更新这本书的时候了。
所以我就这样做了。Erik,刚刚完成《Lucene in Action》一书,所以本书的第2版只剩下我一位作者了。很幸运,我有一个良好的开端:所有第1版留下来的文字。这些文字本身就是需要重写的起点。第2版中除了Ant自身的变化之外,我还必须应对更多的变化:企业级Java,XML Schema语言,还有部署、测试工具,甚至是方法论。因此这带来了很多艰难的选择:是停留在JUnit和JavaEE的世界,还是转移到Spring、OSGi和TestNG阵营,用新的工具来打包、发布和测试应用程序。我选择留在了传统的世界里,因为从事Java EE相关开发的人们往往需要更多的帮助,而且JUnit 3也已经很出色了。如果事情还将不断地发牛深刻变化,那么我们会推出本书的第3版。..
这本书已经全部更新了,它向你展示了如何使用Ant 1.7去构建、测试、部署现代的Java应用程序。我对一些高级内容的章节很感兴趣,比如第10章和第11章,它告诉你如何使用Ant和Ivy协同工作,构建大型的项目、管理过程中的包依赖关系。第16章,部署,是我的最爱,因为部署正是我现在的研究领域。如果你能自动化部署到一个3层的体系结构上,你就能自动化部署到任何体系结构—卜了,比如Amazon的EC2服务器中心(Server Farm)。如果你的应用程序设计得当,那么甚至把程序部署到由500台主机组成的网格系统上也不在话下!
这就是为什么构建和测试Java应用程序的过程会令人如此兴奋。这些事看上去有些无聊,IDE可以为你完成一切,但是最有趣的项目,应该做一些前无古人的事情。如果你正在从事创新的事业、如果你希望站在技术的前沿,那么你需要工具的支持,来实现功能和灵活性。Ant可以做到这些,它非常适合应用在大型Java应用程序的开发上。
溢美之词已经说得足够多了。我写这本书的过程非常愉快,希望你也能读得愉快!...
STEVE LOUGHRAN

媒体评论回到顶部↑

“……阅读此书,不要犹豫。”.
——Kevin Jackson,Ant成员
“如果你是Java开发者,并且今年只打算读一本书的话,那就是这本了。”
——Leo Simons
Apache Gump开发者
资深工程师,Joost
“不要因为没有阅读这本书而把你的构建过程置于风险之中。”
——Jon Skeet
资深软件工程师
Audatex(UK)..
“强烈建议每位开发者都阅读。”
——Bas Vodde
敏捷和整合产品开发经理
Nokia Siemens Networks
“只为第16章这一章就值得购买这本书。”
——Julian Simpson
ThoughtWorks. Ltd ...

评论交流

共有11人开贴评论  11人参与评论  8人参与打分 查看

4人
 50%
用户平均打分
我要写评论 help如何参与评论和打分
1人
 12%
1人
 12%
0人
 0%
2人
 25%

laianfa

一级评论员
该会员在china-pub购买过此书
  
发表于:2009-3-13 17:00:00
翻译太烂了,看英文原版也没这么累!
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

hartwell

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-1-4 15:14:00
看得出来,作者水平很好,但是翻译的实在太差了!简直惨不忍睹
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

xing__lu

二级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-2-17 14:11:00
“包含了可以重新发布的工件”,这工件在软件里面是什么意思。。。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

saillanbo

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2008-9-19 12:04:00
买了看了还不错,比较经典
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

hzwangbing

三级评论员
评价等级:  
发表于:2008-6-30 17:22:00
评价只是针对这本书的原版,翻译的怎么样,要去过书店后才能下定论。

不过Ant这东西,现有的知识 Google足以!
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共11条)