<?xml version="1.0"?>
<project
    name="The Build System Formerly Known As Jeff's">
    <info
        version="1.0"
        web="http://opensource.socialchange.net.au/build/"/>
    <developers>
            <person name="Jeff Turner" email="jeff@socialchange.net.au" id="JT"/>
    </developers>
    <description>
    <short>A generic build system, capable of building a wide variety of projects.</short>
    <detailed>
        <pre><![CDATA[
        Many Java projects have similar needs from their build system. Compile
        the code, create a jar, javadocs, distributions, run junit tests, etc.
        This build system is designed to handle a basic set of such activities.
        ]]>
</pre></detailed>
    </description>
    <dirstruct>
        <dir name="/">
            project root
            <file name="build.xml">Generic Ant build file</file>
            <file name="dependencies.xml">Ant file for updating dependencies</file>
            <dir name="lib">compile-time jar dependencies for src/java</dir>
            <dir name="src">
                anything that will end up in the final product
                <dir name="java">
                    java code
                    <file name="foo">a file called foo</file>
                </dir>
                <dir name="lib">runtime jar dependencies of src/java</dir>
                <dir name="etc">
                    misc files
                    <file name="Manifest.mf">Manifest to be used in jars</file>
                </dir>
            </dir>
        </dir>
    </dirstruct>

    <features>
        <feature ID="unittest">
            <description>Unit testing support</description>
        </feature>

        <feature ID="clean">
            <description>A 'clean' target which removes the generated files from the last build</description>
        </feature>

        <feature ID="ctags">
            <description>
                When building, the 'ctags' command will automatically be run.
                'ctags' builds a cross-reference of all function and variable
                definitions in the code, allowing for rapid navigation if you
                have a ctags-supporting editor.
            </description>
        </feature>

        <feature ID="license">
            <description>
                Support for a 'licenses' directory, whose contents will be
                bundled with distributions.
            </description>
        </feature>

        <feature ID="dependencies">
            <description>
                Add a 'dependencies.xml' build script, which automatically
                updates dependency jars. Doesn't work very well..
            </description>
        </feature>

        <feature ID="docs">
            <description>Support for building documentation.</description>
        </feature>

        <feature ID="generated_by">
            <description>
                Make generated build files include a logo, saying "Generated by
                ANTHEAP" or something like that.
            </description>
        </feature>
    </features>
    <properties>
        <property ID="copyright">
            <description>
                Whenever a copyright statement should be assigned, this text
                will be used if defined.
            </description>
            <defaultvalue>Copyright blah blah</defaultvalue>
        </property>
        <property ID="packagename">
            <description>
                The primary Java package name for your classes.
            </description>
            <defaultvalue>net.socialchange.template</defaultvalue>
        </property>
        <property ID="packagedir">
            <description>
                The primary Java package directory for your classes.
            </description>
            <defaultvalue>net/socialchange/template</defaultvalue>
        </property>
        <property ID="propfile">
            <description>
                Determines what to call the properties file associated with the build system. Popular choices include .ant.properties, ant.properties and build.properties
            </description>
            <optionlist>
                <option>
                    build.properties
                </option>
                <option default="true">
                    .ant.properties
                </option>
                <option>
                    ant.properties
                </option>
            </optionlist>
        </property>
    </properties>

    <profiles>
        <profile ID="minimal" default="true">
            <description>The bare minimum</description>
            <features IDREF="clean"/>
            <properties>
                <property IDREF="copyright">bob</property>
                <property IDREF="propfile">.ant.properties</property>
            </properties>
        </profile>
        <profile ID="normal">
            <description>Normal</description>
            <features IDREF="clean ctags license dependencies docs generated_by"/>
        </profile>
        <profile ID="unit_testing">
            <description>With unit testing</description>
            <features IDREF="unittest clean ctags license dependencies docs generated_by"/>
        </profile>
        <profile ID="cocoon">
            <description>With a cocoon-based xdocs system</description>
            <features IDREF="unittest clean ctags license dependencies docs generated_by"/>
        </profile>
</profiles>

</project>