本文将介绍一个企业级 Java 软件构建系统 EL4Ant ,该工具可以为构架一个自己的开发运行软件系统提供很好的基础保证,它不仅让你无需关心 Apache Ant 的构建文件 build.xml 如何修改或者增加构建任务,而且使得你的软件在企业中达到构建工作高度的标准化、构建命令基于 Java 代码的可扩展性及其可重用性和开发软件工作的规范化。
另外本文还将阐述该工具如何和软件集成开发工具 Eclipse 和网络服务器 Apache Tomcat 简单而方便地一起工作,之后将用实例阐述该工具是如何快速和简单地开发和管理复杂大型 Java 软件工程项目的可能性。利用该系统和集成第三方软件框架开发 Java 服务端软件如下图所示,它不间断地处理网络中的数据传输。
EL4Ant 系统主要优势
软件构建工具是为了软件的开发、编译和部置更为方便和简洁。在软件企业中,好的软件构建工具对于软件开发效率会有极大的提高,因此选择好一个软件构建工具应该是软件企业的一个重要环节。在每一门计算机语言中都有自己的软件构建工具。C/C++ 语言有 make 工具作为它重要的软件构建;Ruby 语言也有自己的软件构建工具 rake (ruby make),它们在各自语言的软件开发中起到了重要作用。同样地,Java 语言也有自己的基础软件构建工具 Apache Ant 和在其基础上发展起来的重要软件构建工具 Apache maven ,它们都在 Java 软件开发中得到了充分应用。
因为 Java 语言软件的多样性和复杂性,所以如何为自己的软件找到一个适合的构建工具是十分必要的。你是否想要有一个工具既简单方便地被我们所使用,也不需要自己再写 xml 文件,还要为我们提供已定制好的所有常用的构建命令,又能够为我们快速地把它和主流的集成开发工具 Eclipse 一起工作?更进一步地,把构建命令作为一个程序 Java 程序来进行开发,如果你想扩展你的构建命令的话?下面我们就来介绍一种这样的软件构建系统 EL4Ant 。该工具来自于现实的软件开发项目,也希望能为你的实际工作服务。
任何一个应用软件框架都离不开一个有效的软件构建系统,比如 Ruby on Rails 框架的成功就有一个很好的构建工具 rake。EL4Ant 系统是一个轻量级的、高效的和基于 Apache Ant 的软件构建工具。大家知道,真正的实际项目会有大量的子项目,而在子项目下面还有很多模块,管理和开发这些项目和模块是一个相当复杂而又繁重的任务。该工具可以帮助你简单地完成这些事情,它能够把一个实际项目根据你的需要分成若干个开发项目(我们在这里把它称之为工程),在每个工程下面可以创建若干个模块,在这个模块下面再可以有若干个 Eclipse 项目(自动产生 Eclipse 项目的基本配置文件)。所有这些基于模块的 Eclipse 项目的依赖关系和属性都可以由你自己简单地进行配置和定义的。
一旦你把你的工程、模块和 Eclipse 项目定义好之后,其它工作都由工具 EL4Ant 来完成了。工具 EL4Ant 把所有构建命令都为你准备好了。从层次上来说,每个 Eclipse 项目都有相应的编译和运行命令,每个模块也是如此,你不必为每个 Eclipse 项目进行编译等工作。从构建命令来说,不仅仅有软件构建工具基本代码的编译、编译好的代码删除和通过 Main 类代码执行等功能,还有大量十分有用的命令,执行 JUnit 、生成 Javadoc 文档、生成 Checkstyle 报告和和执行测试覆盖率工具 EMMA 并且生成其报告等。
EL4Ant 系统是一款绿色软件构建工具。你可以把它及其所有的工具(Ant 和 Tomcat 等)和你软件开发所需要的第三方软件包一起带走,移到任何机器和任何目录下工作,一切照样进行,不需要你再作任何开发的配置工作。
EL4Ant 系统版本说明、安装及相关软件
EL4Ant 系统目前主要有两个版本 0.9.2 和 0.9.3,最新版本 0.9.3 修改了大量的问题报告,使得该系统更为成熟,而版本 0.9.2 在使用时会发生一个小错误。两个版本都可下载,都包含有两个部分:一个含基本实例项目的开发系统和一个该系统的原代码。我们本文使用版本 0.9.3。要是我们作为软件开发人员使用该系统的话,一般只需要系统本身,而不需要该系统的源代码,但是如果我们发现系统本身少了某些必要的内容,那么你可能需要下载源代码。源代码的另外用途是你在开发该系统的构建命令插件时参考相应的插件代码会有用。你可以在这里下载它们。
把下载的文件 ant+el4ant+helloworld_0.9.3.zip 解压并且存放到你希望的目录 %EL4ANT_HOME% 下。这儿你需要设定环境变量 EL4ANT_HOME。
安装和配置 Java 语言开发环境 Java SDK 5.0 和安装集成开发工具 Eclipse 3.2 或者以上版本是我们本文的前提条件。
假定你的 Eclipse 软件安装在目录 %EL4ANT_HOME% 下,创建一个软件 Eclipse 的桌面链接,并且设定如下:
%EL4ANT_HOME%\eclipse\eclipse.exe -data %EL4ANT_HOME%\workspace
EL4Ant 系统结构说明
在目录 %EL4ANT_HOME% 下你现在应该看到四个目录:
ant demo-project el4ant workspace
除了目录 ant 安装了软件 ant 和目录作为 Eclipse 项目的工作目录外,最重要的目录是 el4ant 和 demo-project。在 El4Ant 的系统目录 el4ant 下有两个目录 lib 和 project-template,目录 project-template 仅仅是一个模板,它在这个目录里不是一定要的,这个模板我们称之为工程。目录 demo-project 就是这个模板的一个实例,或者说是 EL4Ant 系统的一个工程实例。而存放所有的系统软件包的目录 lib 是必须的。
EL4Ant 系统可以有若干个工程。工程目录是我们实际软件项目存放的位置。在这个工程目录里有若干个模块,在模块下可以有若干个 Eclipse 项目。一般情况下工程是和目录 ant 同级;模块是工程的子目录;Eclipse 项目目录可以在模块下的目录或者下一级或者再下几级目录里。
目前在工程目录 demo-project 下应该存在三个 xml 文件。这三个文件中最重要的也是经常修改的文件是 project.xml,该文件把 Eclipse 的项目和属性一次搞定,其它两个文件很少修改。在你编译以后会自动产生一个 ant 文件 build.xml,这个文件不需要去修改。
集成 Tomcat 版本 5.5+ 到 EL4Ant 系统
下面我们简单说明一下网络容器集成到 EL4Ant 系统中。先在目录 %EL4ANT_HOME% 下创建一个目录 tomcat。你可以在如下的链接获取网络容器 Tomcat 版本 5.5.23: http://tomcat.apache.org/download-55.cgi。
在你下载好的文件 apache-tomcat-5.5.23.zip 解压到目录 %EL4ANT_HOME%\tomcat 下之后,该目录下应该有目录 bin。这样你可以通过 EL4Ant 系统开发网络应用软件。
一分钟后开发 Java 软件
打开你的系统终端,输入下面两条命令(在 Linux 下把命令中的“\”改为“/”下同):
cd %EL4ANT_HOME%\demo-project ..\ant\bin\ant -f bootstrap.xml
启动 Eclipse 工具,然后点击菜单,按照下面给定的方法可以把所有模块 helloworld 下的 Eclipse 项目一次性导入到 Eclipse,进行软件开发等工作。注意所有项目的关联性也在 Eclispe 工具中体现出来了。
—File —Import... —General —Existing Project into Workspace—Next —Browse... —%EL4ANT_HOME%\demo-project\helloworld(找到该目录) —Ok —Finish
再执行一条命令,你就可以打开你的浏览器 ( http://localhost:8080/helloworld/ ) 访问我们的网络软件
..\ant\bin\ant compile deploy.war.module.eu.helloworldweb
最后我们给出两条有用的命令,其中第二条命令输出结果,你可以看到由 EL4Ant 系统所生成的所有构建命令如这里的链接图:
..\ant\bin\ant -h ..\ant\bin\ant -p
后记
下次我们有机会再深入探讨如何从模板出发创建一个类似于 demo-project 实例工程及其模块和 Eclipse 项目。
从上面你可以了解到,EL4Ant 系统体现了习惯优于配置(COC,Convention over Configuration),提高软件编程的乐趣和生产效率。EL4Ant 系统要集成开发工具、系统和第三方软件包也是很简单的。我们可以集成许多第三方重要的软件框架,如著名的控制反转 Apache HiveMind 框架和基于 SOAP 的网络服务框架 Codehaus XFire 等,来完成更为复杂的软件开发项目。
作者简介:骆古道,网名 Cnruby,八十年代初毕业于西北工业大学数理力学系,1988 年公派留学德国,从事组合最优化理论研究,从九十年代初期起一直致力于计算机领域软件开发、设计和管理等方面工作,个人博客为“道喜技术日记”。 王德志,八十年代末获得西安交通大学计算机专业硕士学位,多年来一直主要从事计算机系统研究工作,在软件项目管理和领导方面有丰富经验。
评论