Phing用户指南
Phing是什么?
Phing是一个基于Apache Ant的项目代码构建系统.你可以用她做传统的构建系统能做的任何事情,比如GNU make,并且Phing使用简单的XML构建文件和可扩展的”任务”使之成为易于使用和极具可扩展性的框架.
因为Phing是基于Ant的,所以本手册部分内容是摘自Ant手册.
Phing & Binarycloud :历史
Phing源自Binarycloud的一个子项目.Binaryclound是一个高度工程化的框架,为了在企业环境中使用而设计.Binarycloud广泛使用XML来存储关于项目的元数据(配置,节点,窗口小部件,站点结构,等等).
因为Binarycloud是为PHP构建的,在每一个页面请求上执行XML处理和转换是不切实际的.Phing用于”编译”XML元数据为可被PHP引擎处理的数组形式.
当然,XML”编译”只是Binarycloud使用Phing构建系统的许多方法中的一个.Phing构建系统使你能够:
1. 从单一的源代码树构建多语言页面.
2. 在单个XML文件中聚集元数据(Metadata)并且用多个不同的XSLT生成几个文件.(译者注:在XSLT2.0规范中,消除了1.0规范只能有一个输入一个输出的限制,现在我们可以做到单一输入来生成多个输出文件)
最初,Binarycloud使用GNU make构建系统,但是,这样有些缺点. 在makefile中的"Space before tab problem"问题.实际上,它仅在UNIX系统上没有问题.因此需要寻找一个更好的构架系统.Apache Ant是一个不错的选择—它使用XML构建文件和模块化的设计.但问题是Ant用java写成,要使用它你必须得在你得计算机上安装Java虚拟机.
Besides the need for yet another interpreter (i.e. besides PHP), there was also legal/ideological conflict in requiring a commercial JVM (there were problems with Ant on JVMs other than Sun's) for an LGPL'd Binarycloud.
因此,Phing开始开发了,Phing是一个借助于Ant的思想用PHP写成的构建系统.第一版同时设计和开发,因此不是十分稳定.系统很快暴露出了它的限制并且需要一个更好的Phing系统.因此衍生了Phing2的雏形.
Phing当前的开发集中于Phing2,它涉及许多功能增强,bug修正,并且最值得注意的转变是用PHP5的抽象类,接口,和try/catch/throw异常处理来重写了原来Phing的基础代码.
Phing怎样工作
Phing使用包含一组项目构建描述的XML构建文件.构建文件由一些运行实际的命令的目标组成(比如复制文件,删除目录,执行数据库查询,等等).因此使用Phing,第一步要编写构建文件,然后运行Phing,在构建文件中定义的要执行的目标.
phing −f mybuildfile.xml mytarget
如图1,键入phing –h可以查看命令参数的描述
默认情况下,Phing将会查找一个叫build.xml的文件.(除非构建文件的名称不是build.xml,否则不必为Phing指定构建文件的名称) 并且,如果没有指定任何目标那么Phing将执行在<project>标签中设置的默认目标(default属性所指定的).
Cool,so how can i help?
Phing当前正在积极额开发之中并且又许多事情要完成.如果要参与其中,可以通过下面的方法:
1. 阅读本手册以了家Phing ;-)
2. 到http://phing.tigris.org订阅”dev”邮件列表
设置Phing
本章的目标是帮助你在你的操作系统上正确的设置和执行Phing.一旦你正确的设置了phing你就不需要再回过头来看这章了,除非你要重新安装,或者是迁移到其他的平台.
有几种方法来获得Phing的发行包.如果你不想参与当前的开发,推荐你获取最近的快照版本或稳定版本,如果你有兴趣参与我的的开发,你可以从CVS获取正在开发中的文件.
获取Phing发行包的最容易的方法是访问Phing的主页http://phing.info 下载当前相应格式的你需要的分发包.
自2.0.0b1版之后,你可以可以下载PEAR可安装包和完全的Phing分发包.如果你希望修改Phing,我们建议你下载完整的Phing发行包,这样你可以创建你自己的PEAR包.如果你知识简单地使用Phing作为项目的需要或构建其他的包,下载并且安装PEAR包.
从CVS获取一个正在开发中的拷贝
鼓励你对Phing的开发作出贡献.如果你像参与到Phing的开发中或你知识对其中最新的功能感兴趣,你可以看看下面的叙述并中从CVS获取一份拷贝.
The CVS revisions of Phing are not bullet−proof and may fail to execute properly on your machine. Only obtain the CVS versions if you are absolutely aware of limitations and constraints of such an action.Additionally you should sign up to the development mailinglist to report and notice errors and incompatibilities.
我们假设你正运行UNIX类型的操作系统
So we expect the CVS software is installed ant the cvs executable is in your system's search path.. However, the steps for a Windows based system are very similar.
这里有大量的关于如何使用CVS的资源可用,并且还有关于tigris项目管理平台的CVS说明.
首先你必须做的第一件事是登录到CVS服务器.在命令行下键入:
cvs –d :pserver:guest@cvs.tigris.org:/cvs login
如果你要作为开发者登录到Tigris Web站点上.用你自己的用户名和密码登录.你也可以以访客的身份登录到Tigris Web站点.
要从项目源代码资源库中捡出个别的模块(如果你不需要整个项目资源库),键入:
cvs –d :pserver:guest@cvs.tigris.org/cvs checkout phing
PEAR 安装
安装Phing最简易的方法是使用pear安装工具.
$> pear install http://phing.info/pear/phing-current.tgz
PEAR安装工具将检查包的依赖性,并把Phing的执行脚本放到PHP的安装目录下面(pear命令脚本同时也在这个目录下面)
非PEAR安装(手动安装)
如果你不是用pear安装,你可以自己手动安装,但这样要复杂一些,你需要配置你的环境变量以使phing能够找到phing.bat执行脚本.你可以从http://phing.tigris.org下载
phing-2.0.0.zip 或phing-2.0.0.tar.gz ,解压到任意一个目录下,产生三个目录 bin,docs和classes,然后设置环境变量PHING_HOME,把它指向到Phing目录.
例如:我下载了phing-2.0.0.tar.gz 解压到 D:\Phing 那么就把PHING_HOME设置为D:\Phing.
运行Phing之前,你还需要做一下配置.
1. 添加$PHING_HOME(*nix)或%PHING_HOME%(windows)到PATH环境变量中.
2. 设置PHING_HOME环境变量指向到Phing的安装目录.
3. 设置PHP_COMMAND变量,指向php命令所在的位置,例如(*nix /usr/bin/php)或windows(c:\php5\php.exe)
4. 设置PHP_CLASSPATH环境变量以包含Phing需要额类库.至少应该包含%PHP_HOME%\classes.
还有一种方法是把%PHP_HOME%\classes路径添加到php.ini文件中的include_path参数中去.
5. 检查php.ini,并确保有如下设置
a) nax_execution_time = 0 // 不限制
b) memory_limit = 32MB // 决于你的构建文件的大小,你可能需要更多的内存
UNIX
如果你使用UNIX,使用 bash bourne shell,并且Phing安装在/opt/phing目录下
通过下面的方法适当地设置环境.
export PHP_COMMAND=/usr/bin/php
export PHING_HOME=/opt/phing
export PHP_CLASSPATH=${PHING_HOME}/classes
export PATH=${PATH}:${PHING_HOME}/bin
Windows
在Windows平台生假设Phing安装在 c:\opt\phing目录,那么配置入下:
set PHP_COMMAND=c:\opt\php\php.exe
set PHING_HOME=c:\opt\phing
set PHP_CLASSPATH=c:\opt\phing\classes
set PATH=%PATH%;%PHING_HOME%\bin
高级
有许多用于运行Phing的变量,你至少需要如下几个设置:
1. 如果你要Phing能够使用其他的包/类,那么你要把他们添加到PHP_CLASSPATH变量中PHP.ini文件的include_path变量中.
2. 有些任务要求第三方库.
调用Phing
现在,你准备在命令行或脚本中调用Phing了.下面的章节简要的描述了如何正确的执行Phing
命令行
Phing在命令行执行也很简单.仅仅切换到构建文件所在的目录,并键入:
phing [targetname]
Getting Started
phing构建文件用XML标记语言编写,因此你应该有一些XML和Ant的基础知识才能很好的理解下面的章节,在web上有许多的资源可用。
XML和Phing
构建文件有如下基本结构:
1. 文档序言(document prolog)
2. 根元素<project>
3. 几个类型元素(<property>,<fileset>,<patternset>)
4. 包含一个或几个内建的或用户自定义的任务元素(例如:<javac>,<tar>)
编写一个简单的构建文件
<?xml version="1.0"?>
<project name="FooBar" default="dist" basedir=".">
<!—创建文件夹-->
<target name="prepare">
<echo msg="Preparing build..." />
<mkdir dir="./build" />
</target>
<!—复制文件-->
<target name="build" depends="prepare">
<echo>Building...</echo>
<copy file="./src/File.php" to="./build/File.php"/>
<copy file="./src/File2.php" to="./build/File2.php"/>
</target>
<!—打包-->
<target name="dist" depends="build">
<echo message="Creating archive..." />
<tar outfile="furbee.tar.gz" basedir="./build"/>
</target>
<!—删除,清理-->
<target name="clean">
<echo msg="Cleaning up..."/>
<delete file="./build"/>
</target>
</project>
project 元素
文件序言之后紧跟着的第一个元素的是<project>,此元素是一个包含其他元素的容器,并且有以下属性:
<project>的属性:
属性 含义 要求的?
name 项目的名称 No
basedir 项目的根目录,如果未指定将使用当前目录 No
default