InfoQ

文章

创建基于EL4Ant系统的模块和项目

作者 骆古道 发布于 2007年7月6日 上午8时37分

社区
Java
主题
编程
标签
Eclipse,
EL4Ant

本文前提条件

本文内容是建立在下面的软件之上,这些软件分别是:

关于软件EL4Ant和GnuWin32的相关安装资料可以参照这里的技术资料[ 1 ]和[ 2 ]。为了我们说明问题简单起见,需要修改和设定下面的环境变量,其中方括号内容需要作相应的修改:

SET EL4ANT_HOME=[EL4Ant软件的安装目录]
SET ANT_HOME=%EL4ANT_HOME%\ant
SET NPP_HOME=[Notepad++的安装目录]
SET PATH=%PATH%;%ANT_HOME%\bin;%NPP_HOME%

为了使得EL4Ant系统可以利用Sun Java SDK 5.0版本,我们需要修改一下软件EL4Ant的样板工程的配置文件bootstrap.properties,该文件在系统终端中利用下面的命令或者其它文本编辑器被打开:

notepad++ %EL4ANT_HOME%\el4ant\project-template\etc\bootstrap.propertie

然后在该文件中找到内容“buildsystem.javac.source”,把其值改为如下所示:

buildsystem.javac.source=1.5

创建自己的EL4Ant工程及其模块

为了系统地阐述EL4Ant系统以及为今后集成HiveMind框架和Spring框架到EL4Ant系统等做好准备,本文的所有内容都是在一个称之为infoq_cn新工程下面,我们将在该工程下创建一个新的模块helloworld作为本文所有Eclipse项目的模块项目,简称模块。首先我们切换到EL4Ant系统的根目录,然后利用EL4Ant系统的工程模板project-template,创建一个我们自己的新工程 infoq_cn。在实际工作中,你可以按照工程的需要创建若干个这样的工程,工程名称也可以根据现实的需要进行命名。接下来为了创建一系列Eclipse项目,在工程目录infoq_cn下我们需要生成一个模块helloworld。这种模块名称也是自己定义的,并且可以产生任意多个这样的模块。以上内容在系统终端下可以利用如下操作命令被完成:

cd %EL4ANT_HOME%
cp -R el4ant\project-template infoq_cn
cd infoq_cn
mkdir helloworld

创建基于EL4Ant的Eclipse项目

在这里我们将继续说明,在EL4Ant系统中如何创建一个基于Eclipse集成开发工具的简单Eclipse项目。一般而言,创建这样的一个Eclipse项目大致有三个步骤:产生Eclipse项目的相关目录;修改工程的工程配置文件project.xml;导入创建好的Eclipse项目到Eclipse集成开发环境。下面我们通过实例来说明这样方法。

因为我们在模块helloworld下可以创建很多相关的Eclipse项目,所以一般在实际软件开发中,把一些相关的Eclipse项目(比如该项目的测试Eclipse项目等)存放在某个目录(在一个模块目录下这样的目录,我们称之为Eclipse项目组目录) 下,以便许多Eclipse项目更好地和有序地被管理和控制。先确定自己的Eclipse项目组目录的和Eclipse项目目录。比如我们想把所有模板Eclipse项目在一起管理,就会把所有模板项目生成在目录helloworld/template下。而Eclipse项目的根目录是在 Eclipse项目组目录helloworld/template下的一个子目录basic。要想产生这样的一个Eclipse项目,其执行命令如下:

mkdir helloworld\template\basic
mkdir helloworld\template\basic\java

注意所有下面的命令都是在目录%EL4ANT_HOME%\infoq_cn下被执行。你还看到上面命令中创建了一个java目录,这是EL4Ant的Eclipse项目的Java源代码默认目录。而EL4Ant不用我们关心Eclipse项目的Java代码的编译目录和第三方软件包目录。接下来我们要告诉EL4Ant系统,我们的Eclipse项目在哪里、Eclipse项目的相互关系如何和Eclipse项目需要什么样第三方软件包等等。打开 El4Ant工程infoq_cn的最重要工程配置文件project.xml,其命令如下:

notepad++ project.xml

在你打开了该文件以后,我们把下面的代码加入到该文件的标记ant:project内。其中标记module的path是Eclipse项目的根目录;标记 module的name是你可以自己定义有意义的名称,要是不定义就是path内容,但是不包含path的“/”,比如module的属性path的值是 “helloworld/template/basic”,该module的属性name的值就是“helloworldtemplatebasic”;属性runtime.class的值是你即将创建的包括包名在内的Java类。属性runtime.runnable的值是true说明这个的类Main是可执行的。

<module path="helloworld/template/basic" name="template.basic">
    <attribute name="runtime.runnable" value="true">
    <attribute name="runtime.class" value="com.hhtong.helloworld.Main">
</module>

在该工程配置文件中,你还可以定义项目需要哪些软件包和哪些相关的Eclipse项目,这样可以十分明确了解所有Eclipse项目之间的相互关系。在把Eclipse项目导入到Eclipse开发工具之前,我们必须执行下面的命令,以达到创建一个Eclipse项目的相关配置文件。现在我们可以进入Eclipse集成开发工具。关于如何把EL4Ant的Eclipse项目导入到Eclipse开发工具方法请看这里[ 1 ]。

ant -f bootstrap.xml

在你导入了Eclipse项目template.basic之后,就可以进行该项目的代码开发和程序运行:

  • 创建Java Package,其名称为:com.hhtong.helloworld
  • 创建包com.hhtong.helloworld的Java类,其名称为:Main
  • 编辑Java文件Main.java成为一个简单的Java应用软件
  • 在系统终端执行下面的命令,或者通过Eclipse工具执行该文件
ant jars start.module.eu.helloworld.app

EL4Ant工程及其模块和Eclipse项目相互关系

上面我们完成了从EL4Ant工程一直到该工程的Eclipse项目创建的整个过程。为了能够让你更为全面的理解它们之间的相互关系,这里给出了下面三个表。在【表一】中的所有目录都是在EL4Ant根目录下的子目录,这些目录可以分为两大类:一类是工具目录,另一类是EL4Ant工程目录。在我们的实例中,每个EL4Ant工程分别是【表二】的左右表格。【表三】是我们针对工程infoq_cn而给出的,其中Eclipse项目template/hivemind和hivemind/calculator是下一次需要说明的Eclipse项目。从这些表可以清晰地看到所有工程、模块和Eclipse项目的情况和相互关系,便于我们软件管理人员进行软件工程的管理和控制,也给我们软件开发人员对于整个工程有个完整的了解。
  

【表一】

【表二】

【表三】

后记

下次我们有机会再探讨如何集成Google Guice框架到的EL4Ant系统中。

从软件开发的角度来看,软件工程的管理和控制实际上是如何把一个现实软件工程如何分割成若干个开发工具的项目比如Eclipse项目或者NetBeans项目。为了实现这一目标,EL4Ant系统给与了我们很好的基本架构。如何把不同的框架或者软件包集成在一起,并且有效地在一起工作(具体地说被一个Eclipse项目或者NetBeans项目所利用)是一个很复杂的工作。


作者简介:骆古道,网名Cnruby,八十年代初毕业于西北工业大学数理力学系,1988年公派留学德国,从事组合最优化理论研究,从九十年代初期起一直致力于计算机领域软件开发、设计和管理等方面工作,其个人博客为道喜技术日记

2 条回复

回复

我不大明白这个项目和Maven的区别 发表人 Gene Wu 发表于 2007年7月19日 上午4时40分
纠正文章中的两处错误 发表人 Casel Chen 发表于 2007年7月25日 上午1时37分
  1. 返回顶部

    我不大明白这个项目和Maven的区别

    2007年7月19日 上午4时40分 发表人 Gene Wu

    Another Build System like Maven?

  2. 返回顶部

    纠正文章中的两处错误

    2007年7月25日 上午1时37分 发表人 Casel Chen

    纠正文章中的两处错误:
    1. 少了<attribute> XML Element的结束符
    <module path="helloworld/template/basic" name="template.basic">
    <attribute name="runtime.runnable" value="true"/>
    <attribute name="runtime.class" value="com.hhtong.helloworld.Main"/>
    <module></module>
    2. 在系统下执行的命令应该为
    ant jars start.module.eu.template.basic

    用下来感觉可以作为中小型项目的软件构建工具,但因为其本身还是来源于Ant,所以还是具有Ant的缺点,仅仅是构建工具而不能通过项目模型来构建项目,还是依赖于大量的脚本来执行一个个target,可以看作是Ant向Maven过渡的产品,我称之为Ant的企业版。</attribute>

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。