This appendix presents some examples of how to write master and slave build files. A complete example project can be downloaded from Agamura's developer site .
<?xml version="1.0"?>
<project
name="helloworld"
default="build">
<sysinfo />
<!-- global framework settings -->
<property
name="target.framework"
value="${framework::get-target-framework()}" />
<property
name="assembly.dir"
value="${framework::get-assembly-directory(target.framework)}" />
<!-- global project settings -->
<property
name="project.version"
value="1.0" />
<property
name="build.dir"
value="build" />
<property
name="install.dir"
value="/usr/local"
if="${platform::is-unix()}" />
<property
name="install.dir"
value="${sys.env.ProgramFiles}"
if="${platform::is-win32()}" />
<!-- default configuration -->
<property
name="project.config"
value="debug" /> <!-- debug|release -->
<property
name="package.config"
value="dist" /> <!-- dist|src -->
<!-- named configurations -->
<target
name="init"
description="Initializes building properties">
<call target="${project.config}" />
</target>
<target
name="init-package"
description="Initializes packaging properties">
<call target="${package.config}" />
</target>
<target
name="debug"
description="Configures a debug build">
<property
name="build.debug"
value="true" />
<property
name="package.name"
value="${nant.project.name}-${project.version}-${project.config}" />
</target>
<target
name="release"
description="Configures a release build">
<property
name="project.config"
value="release" />
<property
name="build.debug"
value="false"/>
<property
name="package.name"
value="${nant.project.name}-${project.version}" />
</target>
<target
name="dist"
description="Configures a distribution package">
<property
name="dist"
value="true" />
<property
name="src"
value="false" />
<property
name="archive.name"
value="${package.name}.zip" />
<fileset
id="archive.set"
basedir="${build.dir}">
<include name="../AUTHORS" />
<include name="../COPYRIGHT" />
<include name="../LICENSE" />
<include name="${package.name}/**" />
</fileset>
</target>
<target
name="src"
description="Configures a source package">
<property
name="package.config"
value="src" />
<property
name="dist"
value="false" />
<property
name="src"
value="true" />
<property
name="temp.dir"
value="/tmp"
if="${platform::is-unix()}" />
<property
name="temp.dir"
value="${sys.env.TEMP}"
if="${platform::is-win32()}" />
<property
name="archive.src.dir"
value="${temp.dir}/${nant.project.name}-${project.version}" />
<property
name="archive.name"
value="${nant.project.name}-${project.version}.src.zip" />
<fileset
id="archive.set"
basedir="${temp.dir}">
<include name="${nant.project.name}-${project.version}/**" />
</fileset>
</target>
<!-- build tasks -->
<target
name="build"
depends="init"
description="Builds the binaries for the current configuration">
<nant target="${project.config} build">
<buildfiles basedir="src">
<include name="**/*.build" />
</buildfiles>
</nant>
</target>
<target
name="test"
depends="init"
description="Tests the current configuration">
<nant
target="${project.config} ${target::get-current-target()}">
<buildfiles basedir="src">
<include name="**/*.build" />
</buildfiles>
</nant>
</target>
<target
name="clean"
depends="init"
description="Deletes the current configuration">
<delete
dir="${build.dir}/${package.name}"
failonerror="false" />
</target>
<target
name="clean-all"
description="Deletes all the configurations">
<delete
dir="${build.dir}"
failonerror="false" />
<delete failonerror="false">
<fileset basedir=".">
<include name="*.zip" />
</fileset>
</delete>
</target>
<target
name="install"
depends="build"
description="Installs the current configuration">
<mkdir
dir="${install.dir}/${package.name}"
failonerror="false" />
<copy
todir="${install.dir}/${package.name}"
overwrite="true">
<fileset basedir="${build.dir}/${package.name}">
<include name="doc/**" />
<include name="bin/*.dll" />
<include name="bin/*.exe" />
</fileset>
</copy>
</target>
<target
name="uninstall"
depends="init"
description="Uninstalls the current configuration">
<delete
dir="${install.dir}/${package.name}"
failonerror="false" />
</target>
<target
name="package"
depends="init init-package"
description="Creates a zip archive for the current configuration">
<delete
file="${archive.name}"
failonerror="false" />
<if test="${src}">
<mkdir
dir="${archive.src.dir}"
failonerror="false" />
<copy
todir="${archive.src.dir}"
overwrite="true">
<fileset basedir=".">
<include name="**" />
<exclude name="*.zip" />
<exclude name="**/build/**" />
</fileset>
</copy>
</if>
<if test="${dist}">
<call target="build" />
</if>
<zip zipfile="${archive.name}">
<fileset refid="archive.set" />
</zip>
<if test="${src}">
<delete
dir="${archive.src.dir}"
failonerror="false" />
</if>
<echo
message=
"Created archive at file://${nant.project.basedir}/${archive.name}" />
</target>
</project>