本文主要介绍 Ant 在多用户开发的情况下如何用 Eclipse并且根据不同的目标环境编译不同的部署包文中首先介绍一个场景给出在开发编译部署过程中遇到的问题然后介绍如何用 Eclipse 来简化你的 Ant 开发过程文章的最后解释如何通过编写有效的 Ant 脚本来提高你的工作效率
读者定位为具有 Java 和 Ant 使用经验的开发人员
读者可以学习到如何使用 Ant 解决一些多用户开发环境中根据不同的目标环境编译成不同部署包的问题
工作场景
现在有一个 web 项目是多人进行开发的通过 CVS 来管理另外该项目还有一些测试人员他们测试部署在测试服务器上的应用程序发现 bug 后通过 bug 管理系统通知开发人员在开发人员修复 bug 并经过本地测试后由专门的人负责检出(check out)代码编译打包后部署到测试服务器上
该项目的成员小A就是负责检出代码编译打包并部署到服务器上的人除了这个任务之外他还是该项目的编程人员在项目进入测试阶段后小A在得到组中别的成员修复了 bug 并且检入(check in)了代码的消息后(也有可能是小A自己检入了代码)小A首先更新本地的代码先在本地做测试确认修复了 bug 后打成 WAR 包部署到测试服务器上并通知测试人员已经修复了 bug让测试人员继续进行测试
小A的烦恼
在该项目中有一些为测试方便开发而写的代码和页面比如跳过用户认证但是在部署到测试机环境的时候需要删除这些代码和页面另外作为一个具有灵活性和扩展性的应用程序又有一些配置文件配置文件中的值会根据环境的改变而变动例如在项目中使用了 Logj 记录日志需要给 Logj 指定日志文件的保存路径本地程序员开发的时候用的是 Windows 系统给 Logj 指定的也是 Windows 的文件系统在测试阶段的时候需要部署到 Linux 系统中那么日志的保存路径也需要做相应的改动部署到测试服务器上的时候除了 Logj 需要改之外还有很多别的配置项目也需要变动并且分散在各个 package 中小A的烦恼也随之而来每次他在做完本地测之后就根据测试机的需要逐个找配置文件更改相应的值并删除那些为测试方便写的代码和页面每天可能根据需要做好几次这样的事情最烦的是他在快做完对测试机环境更改的时候某开发人员突然通知小A说我又改了一点代码刚检入你再重打一个包吧小A又不得不从头开始做新一轮的检出代码本地测试更改配置文件删除不需要的文件打包部署的工作另外小A在测试阶段的后期被通知要求除了每次生成一个测试环境的 WAR 包外还必须生成一个在产品环境下的 WAR 包他做的事情就更多了
从上面的场景可以看出小A的工作效率低而且容易出错甚至有可能导致整个项目的工作效率低下其实可以通过 Ant 来帮助小A快速而且有效地完成这个工作在 Ant 中根据目标环境的需要可以把所有要更改的配置文件的项目集中写到某个配置文件中这样根据不同的目标环境得到不同的配置文件Ant 在编译包时根据不同的目标环境切换不同的配置文件即可比如小A现在碰到的有 中环境开发环境测试环境以及产品环境根据这三种环境可以生成三个不同的配置文件develop_deploypropertytest_deploy property和product_deploy property当小A想生成不同的包时只需在这三个配置文件之间切换就可以了
在正式开始编写脚本之前我们需要下载安装相应的软件
Eclipse为了使 Ant 的开发更加简单我们选择了 Eclipse 作为开发环境当然你可以使用任何你喜欢的文本编辑工具来开发你的 AntEclipse 的最新版本可以在 上下载
AntAnt 是基于 Java 的编译工具它就像 C/C++ 中的 make但是没有 make 那样难用Ant 的最新版本可以在 上下载如果你用 Eclipse 来开发 Ant则不用去单独下载 Ant因为在 Eclipse 中已经集成了 Ant
CVS 客户端(cvsexe)CVS 可以在 上下载
用 Eclipse 来创建 Ant 脚本
如果你使用 Eclipse 来编写 Ant建议使用 Eclipse 以后的版本除了以前 Ant 编辑器提供的语法高亮提示语法错误等功能外Eclipse 版本增加了许多新的功能比如脚本代码的折叠快速定位某属性或者目标(target)段的定义在同一 builder 文件中重构属性名和目标名(快捷方式Alt + Shift +R)调试 Ant 脚本等
下面我们就来看看 Eclipse 中对 Ant 的支持
打开File-New-Project-Simple-Project点击Next输入工程名Ant然后点击直到Finish
在新建的 Ant 工程中新建 Testxml并且拷贝下面的脚本该段脚本的内容就不做介绍了我们主要看 Eclipse 提供了哪些功能注意这时候打开的并不是 Ant 编辑器将内容拷贝进去之后关掉打开的Testxml然后再重新打开它这样 Eclipse 就会用 Ant 编辑器打开它并且也语法高亮了
<?xml version=″ encoding=UTF″?>
<project name=Test default=init basedir=>
<property name=test value=test/>
<target name=init>
<echo>${test}</echo>
</target>
</project>
自动提示和代码折叠功能如果是 Ant 内置的命令或者前面已经定义的变量编辑器会自动提示编辑器右边的加/减号可以代码折叠如下所示
快速定位目标(target)或者定义变量处在上图中将鼠标移至 default=init 中的 init 上之后按下 ctrl 键鼠标变成手状单击就可以定位到定义该目标的地方
快速重构目标名或者属性名选中目标/属性名按下 Alt + Shift + R然后键入你要修改后的值所有引用到的地方都会随之改动如下图所示选中 init 后按下快捷键改成 initial
调试 Ant 脚本在标签<target name=的左边设置一断点然后在编辑器中右击出现的菜单中选Debug As-Ant Build出现后的窗口与调试 Java 程序的界面差不多
这是调试窗口这里可以选择单步跟进跳出等
下面是运行时变量窗口可以看到 test 变量的值是test
运行结果窗口
由此可见如果使用好 Eclipse Ant 编辑器所提供强大的功能的话能大大提高写 Ant 脚本的效率