实战每晚构建之设计和实现
2、构建系统的设计
2.1 分析模型设计
考虑到ant脚本的局限性,我们对构建系统分析模型作如下调整:
因为OSScheduler是个操作系统定时服务的脚本或配置,所以无法继承BuildInfoLog类,我们增加一个LogAdmin类用来启动和记录BuildAdmin运行的日志。为什么我们必须在OSScheduler和BuildAdmin中插入一个LogAdmin类?这是因为ant脚本无法自己记录自己的输出,必须靠调用者,我们必须使用<ant>任务来运行和记录另外一个类的输出。同样BuildAdmin会用<ant>任务来运行和记录ProjectBuild的输出日志。
LogAdmin用<ant>任务实现对BuildAdmin的单项联系;至于BuildAdmin和ProjectBuild之间的一对多的关系可用多个<ant>任务实现。由于要运行,所以类LogAdmin,BuildAdmin和ProjectBuild都必须是可运行的(runnable)。

一个项目的构建应该可以分成固定不变的脚本和项目相关脚本两部分,这个需求可以和设计模式中的模版方法模式的目的相吻合。
类ProjectBuild的test_project方法要完成下列步骤:
准备测试环境,包括为测试目的而进行的编译、打包、安装,其中编译和打包与具体项目有关;
测试,这个任务与具体项目有关;
生成测试报告,它与项目无关;
生成覆盖率信息,它也与项目无关。
类ProjectBuild的dist_project方法要完成的步骤有编译、打包和安装,安装与项目无关。这样运用了模版方法模式之后,构建系统的设计类图就变成了构建系统设计类图二所示。

0
相关文章