phing 脚本手册 http://www.phing.info/docs/guide/current/
Phing 使用了 XML 格式的配置文件来定义部署脚本,从中可以获得工程信息,定义操作组(target)。作为示例,我们将会创建一个基本的 Phing 部署脚本,其中定义了4个目标:通过分析脚本来加深堆phing 的学习,build.xml 脚本内容如下
注解说明
1,工程(project)
定义工程名字,是 build.xml 文件的最外层标签。比如:
2,目标(target)
build.xml 文件是以目标作为分组的,phing 命令也以目标作为部署脚本执行的起点。目标的定义标签:
目标之间可以互相依赖(depends),被依赖的目标会先被执行。当一个目标依赖多个目标的时候,目标名之间以英文半角逗号分隔。
3,任务(task)
任务即脚本的行为或动作,有许多标签来定义。例如:
4,其它
属性(property):
数据类型(Types):
除过 strings, integer, booleans等,还有:
定义文件集:
dir 的值中,使用**表示递归包含,而单个*则表示不是递归包含的。这样便创建了文件的一种数组,它们可以在被其它任务,比如复制任务所使用。
定义文件列表:
Phing 有些特性需要操作系统的支持,比如文件的打包和压缩任务,只能在 Unix/Linux 下运行:
5 build.xml 分析
在以上 build.xml 部署脚本文件中,定义了 4 个目标:
- prepare 目标做一些初始准备工作,创建一个文件夹;
- get 目标将从Subversion存储库中导出最新版本的文件;
- phpunit 目标将执行单元测试,它会从 tests 文件夹寻找与 *Test.php 文件名匹配的文件,调用 phpunit 进行单元测试。自然需要首先安装了 PHPUnit 相关类库;
- install 目标将会把文件安装到指定文件夹(例如网站的跟文件夹),本例是拷贝到 install 文件夹。还可以拷贝单个文件;
其中,install 是默认执行的目标,它依赖 phpunit 和 prepare 两个目标。目标 phpunit 没有依赖别的目标。目标 get 没有被任何目标依赖,所以除过在 phing 命令行后指定,它不会自动被别的目标调用执行。
6 运行phing
在 DOS 命令行或 Linux 的 Shell 下执行 Phing 命令,格式:
phing [目标名]
不指定目标名时,会执行工程中指定的默认目标。
默认地,Phing 会在当前路径下查找一个名叫 build.xml 的 XML 文件。
本例中,运行 phing 或 phing install 命令,会把 id 等于“codefiles”的 fileset 下定义的所有文件,根据 todir 的值,拷贝到指定文件夹下。
C:/Program Files/Zend/Apache2/htdocs/phing>phing install
Buildfile: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml
BUILD FAILED
Error reading project file [wrapped: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml:13:18: No memory]
Total time: 0.4898 seconds
运行以上命令,并没有成功,报告“…… No memory”错误,即内存不足。需要内存大小,是根据 build.xml 文件的大小来确定的。
解决内存不足的问题,可以修改 php.ini 中的 memory_limit 的值:
memory_limit = 128M ;Maximum amount of memory a script may consume (128MB)
改为 memory_limit = 256M,重启 Web 服务。再次运行 phing 命令:
C:/Program Files/Zend/Apache2/htdocs/phing>phing
Buildfile: C:/Program Files/Zend/Apache2/htdocs/phing/build.xml
MyPhingPrj > phpunit:
[phpunit] Tests run: 2, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.07960 s
MyPhingPrj > prepare:
[echo] Making directory install
[mkdir] Created dir: C:/Program Files/Zend/Apache2/htdocs/phing/install
MyPhingPrj > install:
[copy] Created 2 empty directories in C:/Program Files/Zend/Apache2/htdocs/phing/install
[copy] Copying 5 files to C:/Program Files/Zend/Apache2/htdocs/phing/install
[copy] Copying 1 file to C:/Program Files/Zend/Apache2/htdocs/phing/install
BUILD FINISHED
Total time: 1.4857 second