[译]使用属性去控制构建(Using Properties to Control a Build)

[ ] 使用属性去控制构建( Using Properties to Control a Build

                                    ---- 取自 <<Pro Apache Ant>>

 

为了匹配一个复杂的工程,任何构建都可能变得复杂。但是,你也许不总是想要执行构建的每个部分,或者说如果条件满足的话,你也许想要仅仅执行某个特定的部分。当然你能够通过使用目标依赖来创建一个构建序列,这就意味着你能将目标链接起来。使用这个机制,你甚至能够集成条件,而这些条件会导致这个构建过程交叉起来,并且会创建不同的发布。例如,示例应用程序有一个 stand-alone Java 客户端和基于 Web 的接口,尽管它们共享了数据库连接的代码。为这个应用程序的两个部分所做的构建起始于分离这两个部分前的共通代码,而分离取决于你所构建的是哪个部分。


下图显示了这种情形:

 

 r_1.bmp


使用依赖来模拟这个构建过程是足够的简单。这样,你总是可以对 stand-alone 目标简单地设置 depends 特性( attributes )来依赖共通代码的构建。对于 Web 应用程序目标也是一样的。

 

一个可以替换的方案是使用 <target> 的最后两个特性: if unless 。这两个特性会影响到一个目标是否运行,并且运行与否会取决于属性。设置 if 到一个属性名意味着如果属性被设置了,那么目标应该会运行。设置 unless 到一个属性名意味着目标应该会运行除非该属性被设置了。而该属性有什么值并不重要,只要它被设置了。在 Ant 中不存在 null



NOTE if unless 特性中设置的值应该是一个属性名,不是该属性包含的值。不要使用 ${ } ,除非你真的要设置一个属性名作为另一个属性的值。

 



如果 if unless 都设置了相同的属性名,那么 if 会重载 unless ,尽管你没有绝对的理由想这么做。你也应该要意识到这些设置不会影响在 depends 特性中目标的运行。

 

但是,应用程序的构建并不总是这么简单。例如,你也许想要获取并构建第三方的库,只有当你没有它们时。这就意味着 Ant 将必须检查某个特定的文件是否存在 build 目录结构中;如果文件存在,那么 Ant 将跳过上图中的前两个步骤。这就带来了控制构建的第一个元素: <availabe>

posted on 2007-01-05 19:22 会飞的鱼 阅读(222) 评论(0)  编辑  收藏 所属分类: Ant


只有注册用户登录后才能发表评论。


网站导航:
 
<2025年2月>
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

相册

友情链接

开源链接

搜索

最新评论

阅读排行榜

评论排行榜