The following XML file shows a basic Phing build file skeleton that can be used as a starting point for your own build files. See the references in Appendix A and AppendixB for more detailed information on properties and tasks.
<?xml version="1.0" encoding="UTF-8"?> <!-- ========================================================================= The root tag of each build file must be a "project" tag. ========================================================================= --> <project name="(projectname)" [basedir="(projectbasedir)"] [default="(targetname)"] [description="(projectdescription)"]> <!-- ========================================================================= Inclusion of optional overall project properties. ========================================================================= --> <property file="(main property file)" /> <!-- ========================================================================= Build file wide properties used in the targets below ========================================================================= --> <!-- Useful to make the current buildtime available as a property --> <tstamp> <!-- Format is, e.g. Sat, 03 Oct 2009, 16:31 --> <format property="buildtime" pattern="%a, %d %b %Y, %H:%M"/> </tstamp> <property name="(first.property1)" value="(value1)" override="true" /> <property name="(second.property2)" value="(value2)" override="true" /> <!-- ========================================================================= Type and task calls here, i.e. filesets, patternsets, CopyTask calls etc. ========================================================================= --> <!-- Filesets --> <fileset dir="(fileset.directory)" id="(fileset.reference)"> <include name="(include.pattern)"/> </fileset> <!-- Custom tasks --> <taskdef classname="(task.classname)" name="task.name" /> <!-- ========================================================================= All target definitions ... ========================================================================= --> <target name="(targetname)" [depends="targetname1,targetname2"] [if="(ifproperty)"] [unless="(unlessproperty)"]> <!-- ---------------------------------------------------------------------- Type and task calls here, i.e. filesets, patternsets, CopyTask calls, etc. ---------------------------------------------------------------------- --> </target> <!-- ========================================================================= More targets here ========================================================================= --> <target name="..." > <!-- ---------------------------------------------------------------------- Type and task calls here, i.e. filesets, patternsets, CopyTask calls, etc. ---------------------------------------------------------------------- --> </target> </project>
Note: By convention properties are named in dot notation in Phing build files, e.g. ftp.upload, temp.builddir and so on
Property Files define properties. Properties are stored in key/value pairs and may only contain plain text. The suffix of these files should be .properties, the default Property File for a Build File is build.properties
# Property files contain key/value pairs key=value # Property keys may contain alphanumeric chars and colons, but # not special chars. This way you can create pseudo-namespaces myapp.window.hsize=300 myapp.window.vsize=200 myapp.window.xpos=10 myapp.window.ypos=100 # You can refer to values of other properties by enclosing their # keys in "${}". text.width=${myapp.window.hsize} # Everything behind the equal sign is the value, you do # not have to enclose strings: text=This is some text, Your OS is ${php.os} # I guess that is all there is to property files