<?xml version="1.0" encoding="UTF-8"?> <project name="FooBar" default="dist"> <!-- ============================================ --> <!-- Target: prepare --> <!-- ============================================ --> <target name="prepare"> <echo msg="Making directory ./build" /> <mkdir dir="./build" /> </target> <!-- ============================================ --> <!-- Target: build --> <!-- ============================================ --> <target name="build" depends="prepare"> <echo msg="Copying files to build directory..." /> <echo msg="Copying ./about.php to ./build directory..." /> <copy file="./about.php" tofile="./build/about.php" /> <echo msg="Copying ./browsers.php to ./build directory..." /> <copy file="./browsers.php" tofile="./build/browsers.php" /> <echo msg="Copying ./contact.php to ./build directory..." /> <copy file="./contact.php" tofile="./build/contact.php" /> </target> <!-- ============================================ --> <!-- (DEFAULT) Target: dist --> <!-- ============================================ --> <target name="dist" depends="build"> <echo msg="Creating archive..." /> <tar destfile="./build/build.tar.gz" compression="gzip"> <fileset dir="./build"> <include name="*" /> </fileset> </tar> <echo msg="Files copied and compressed in build directory OK!" /> </target> </project>
一个phing的构建文件通常以build.xml命名。如果没有指定文件名,phing会将build.xml作为默认执行的文件。
属性
|
含意
|
是否必须
|
name
|
项目名称
|
否
|
basedir
|
当前项目的起始目录,“.”表示当前目录。
注意:如果未指定此参数,则构建文件的父目录将被设为默认值。
|
否
|
default
|
指定默认的target。如果在调用当前文件时未指定target,
将执行默认target。
|
是
|
description | 项目描述 | 否 |
<target name="A" /> <target name="B" depends="A" /> <target name="C" depends="B" /> <target name="D" depends="C,B,A" />假定我们想执行target D。根据它的depends属性,你可能会认为执行顺序会是,C,B,A。错!C依赖B,B依赖A,因此A会先执行,然后是B,接下来是C,最后是D。
<name attribute1="value1" attribute2="value2" ... />name是task名称,attributeN是属性名,valueN是属性值。
<taskname id="taskID" ... />可以在其它task中通id引用这个task。
<?xml version="1.0" encoding="UTF-8" ?> <project name="testsite" basedir="." default="main"> <property file="./build.properties" /> <property name="package" value="${phing.project.name}" override="true" /> <property name="builddir" value="./build/testsite" override="true" /> <property name="srcdir" value="${project.basedir}" override="true" /> <!-- Fileset for all files --> <fileset dir="." id="allfiles"> <include name="**" /> </fileset> <!-- ============================================ --> <!-- (DEFAULT) Target: main --> <!-- ============================================ --> <target name="main" description="main target"> <copy todir="${builddir}"> <fileset refid="allfiles" /> </copy> </target> <!-- ============================================ --> <!-- Target: Rebuild --> <!-- ============================================ --> <target name="rebuild" description="rebuilds this package"> <delete dir="${builddir}" /> <phingcall target="main" /> </target> </project>
这份构建文件首先定义了一些property。然后定义了一个fileset和二个target。下面我们来快速解读下这份文件。
**/*.phps表示当前目录下,所有子目录中的后缀为phps的文件。
phing -Dbuilddir=/tmp/system-test上例中的builddir值将不再是./build/testsite,而是/tmp/system-test。