企业应用级别的Ant模组编译环境 (1)
[ 来源:互网络 | 更新日期:2007-09-05 01:19:56 | 浏览次数:7507]
简介:jar,
简而言之,我们勉强接受那种把所有的源代码放在一个根目录下,所有的配置文件放在另一个根目录下,而第三方类库也这样处理的做法。但是企业级编译环境很少这么做。今日的企业级Java项目,在结构,功能,以及组织上都很复杂。它们通常都有大量的源代码和支持资源(属性文件,图片,等等。编者注:原文为supporting artifacts,直译为支持物件,但这里根据上下文意译为支持资源较妥)要去管理。有这么多的东西去管理,当一个开发团队试图去建立一个优化的编译方案时,他们常常感到困惑和挫败。
如果,不管这个项目有多大,我们的编译环境都能够在统一的构架中简洁地处理我们所有的源代码,事情是不是会变得好一些呢?本文将展示一个Ant编译环境的例子,它来自我对多年来的多个项目的经验的修改。此时此地,它或许不是最好的方案,但是它的确经历了时间的考验,也一定会帮助你建立并运行在大多数项目上,不管是大是小。
警告
先就一些问题说明一下,这样你就不会读完了这篇文章才发现它对你没有任何价值:
? 本文基于对Ant的了解。它是针对那些会用并喜欢Ant的读者的。
? 这里所说的编译环境是指模组(modular)和模块(module),而模块又是由目录和子目录来定义的。(译者注:模组modular是模块module的集合。它由多个独立的模块构成。)这意味着文件和源代码被存放在许多不同的目录中。因此,如果你使用类似Eclipse或IntelliJ Idea这种可以帮你管理类和文件的位置的IDE工具的话,本文对你会更加有益。当然,你也可以使用文本编译器,但是恐怕你会发现你频频地在多棵“目录树”上爬上爬下。
概念
首先,让我们来谈及掉隐藏在编译环境之后的几个核心概念。它们是模组,层级结构(hierarchical),和资源驱动(artifact-driven)。它们确切的含义又是什么呢?
模组
模组编译是指围绕软件模块来进行组织的一种编译方式。一个模块是一个逻辑的,集合的,功能性单元,对应于系统中的一个特性。对于编译环境而言,一个模块表现为源代码和配置文件的一个自我包含集合(self-contained collection),这些源代码和配置文件用来构建表现了模块所对应的那个命名特性的软件。它几乎和你修订控制系统(RCS:Revision Control System)(例如CVS或者Subversion)中的目录树是一一对应的。举几个例子:security, administration, wiki, email都可以是一个模块。
层级结构
层级结构编译是指含有分层模块的编译方式。也就是,对于一个模块,它可能是由更小的,更特定的子模块(submodule)来构成的。
如果一个模块含有子模块,那么它有责任保证那些子模块以合适的方式被编译。
随后,我们会讨论例子是如何应用层级结构的概念来建立编译环境的。
物件驱动
物件驱动编译是指每个存在的模块(module)或子模块(submodule),都是为了产生一个单独的,可部署的物件。在Java项目中,这些物件主要是.jar,.war,或.ear文件。在其他类型的编译中,它们通常是二进制可执行文件或动态连接库(.dll或.so)。
编译环境的例子也是物件驱动的,我们将会讨论它是如何创建可部署的物件的。
尽管这三个概念都很容易理解,但结合起来用在编译环境中的话,它们会变得非常强大。
现在让我们来看看编译环境是如何组织的。
模组结构
当有很多要去实现的时候,把问题分解为若干个小的部分是


您的位置:
