基于 Ant 搭建敏捷开发过程中的持续集成环境
2010-01-04 00:00:00 来源:WEB开发网Available 与 Condition
在构建过程中,构建脚本不可避免地会对许多外部资源(文件,目录,URL 等)进行访问甚至修改,而为了能够有效的对这些资源进行操作,所需做的第一步通常是验证资源的可用性。<available> 任务可以帮助我们对各种外部资源进行判断,通过设置相应的属性来表明判断结果,进而引导后续的构建操作。
另外,在某些情况下,构建脚本或许需要对多个资源同时进行判断而不仅仅是单个资源。<condition> 任务通过支持丰富的内嵌标记(nested element),如 <and>/<or>/<xor> 等,具备了对资源进行更加复杂的逻辑判断能力。
For 与 If
当我们使用 Ant 脚本编写一些较为复杂的逻辑功能,比如循环和流程判断时,自然希望 Ant 能支持这种编程能力。然而 Ant 核心任务中并没有提供 <if> 任务,只是在 <target> 任务的属性中支持 if 属性,比如 <target name="build-module-A" if="module-A-present"/>,即表示只有 module-A-present 属性存在才执行 build-module-A 目标。但是,必须注意的一点是,这里的 if 并不是判断 module-A-present 属性是否设置为特定值,而仅仅是检查该属性是否被设置了,因而其可编程性并不是很强。
Ant-contrib 为 Ant 提供了与通常所使用的编程语言功能相同的 <if> 和 <for> 任务,在构建过程中灵活运用这两个任务,将大大增强 Ant 对逻辑操作的控制能力,这其实就是一种基于 XML 脚本的编程。
在具体的实践过程,有一点需要特别注意:在使用 <for> 任务的过程中,如果我们期望在循环体内使用一个变量,而非 Ant 的 property,则需借助由 ant-contrib 提供的 <variable> 任务(ant-contrib 任务)来实现。尽管这与 property 的值一经设置便无法改变的设计原则相抵,但有时能够给构建脚本很大程度上的灵活性。
更多精彩
赞助商链接