Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<?xml version="1.0"?>

<project name="package-name" default="compile" basedir=".">

        <!-- Description should describe the build script, not the project.    -->
        <!-- Example: 'Build and release script for the [insert here] package. -->
        <description>Build and release script template for packages containing an API.</description>

        <taskdef resource="jats.properties"/>

        <!-- =================================================================== -->
        <!--  GLOBAL PROPERTIES                                                  -->
        <!-- =================================================================== -->
        <property file="${user.home}/.ant.properties" />


        <!-- =================================================================== -->
        <!--  PUBLIC TARGETS                                                     -->
        <!-- =================================================================== -->

        <!-- =================================================================== -->
        <target name="sandbox"
                description="Prepare the project dependency 'sandbox'.">
                <echo message="Prepare the project dependency 'sandbox'."/>
                <!-- [insert tasks here to prepare the implementation sandbox] -->
                <!-- eg:                                                       -->
                <!-- <jats>                                                    -->
                <!--   <sandbox name="dependency" version="1.2.3.mas"/>        -->
                <!--   <sandbox name="package-name-api" version="1.0.0.mas"/>  -->
                <!-- </jats>                                                   -->
        </target>

        <!-- =================================================================== -->
        <target name="sandbox-api"
                description="Prepare the project dependency 'sandbox' for the API.">
                <echo message="Prepare the project dependency 'sandbox' for the API."/>
                <!-- [insert tasks here to prepare the API sandbox]            -->
                <!-- eg:                                                       -->
                <!-- <jats>                                                    -->
                <!--   <sandbox name="dependency" version="1.2.3.mas"/>        -->
                <!-- </jats>                                                   -->
        </target>

        <!-- =================================================================== -->
        <target name="-compile">
                <echo message="Compile the project source."/>
                <!-- [insert tasks here to perform source compilation]         -->
        </target>

        <!-- =================================================================== -->
        <target name="compile" depends="sandbox,-compile"
                description="Compile the project source.">
                <echo message="Compile the project source."/>
                <!-- Task pulls in implementation sandbox and delegates to -compile -->
        </target>

        <!-- =================================================================== -->
        <target name="compile-api" depends="sandbox-api,-compile"
                description="Compile the project source.">
                <echo message="Compile the project source."/>
                <!-- Task pulls in API sandbox and delegates to -compile -->
        </target>

        <!-- =================================================================== -->
        <target name="package" depends="compile"
                description="Package the project into releasable entities.">
                <echo message="Package the project release entities."/>
                <!-- [insert tasks here to package implementation] -->
        </target>

        <!-- =================================================================== -->
        <target name="package-api" depends="compile-api"
                description="Package the project API into releasable entities.">
                <echo message="Package the project API release entities."/>
                <!-- [insert tasks here to package API] -->
        </target>

        <!-- =================================================================== -->
        <target name="test" depends=""
                description="Test the package using JUnit tests.">
                <echo message="Test the package."/>
                <!-- [insert tasks here to test implementation] -->
        </target>

        <!-- =================================================================== -->
        <target name="release-patch"
                description="Formally release this package as a patch release.">
                <property name="jants.jants.release.category" value="patch"/>
                <property name="jants.jants.release.api"      value=""/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-minor"
                description="Formally release this package as a minor release.">
                <property name="jants.release.category" value="minor"/>
                <property name="jants.release.api"      value=""/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-major"
                description="Formally release this package as a major release.">
                <property name="jants.release.category" value="major"/>
                <property name="jants.release.api"      value=""/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-prompt"
                description="Formally release this package as a user-specified version.">
                <property name="jants.release.category" value="prompt"/>
                <property name="jants.release.api"      value=""/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-patch-api"
                description="Formally release this package as a patch release.">
                <property name="jants.release.category" value="patch"/>
                <property name="jants.release.api"      value="-api"/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-minor-api"
                description="Formally release this package as a minor release.">
                <property name="jants.release.category" value="minor"/>
                <property name="jants.release.api"      value="-api"/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-major-api"
                description="Formally release this package as a major release.">
                <property name="jants.release.category" value="major"/>
                <property name="jants.release.api"      value="-api"/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="release-prompt-api"
                description="Formally release this package as a user-specified version.">
                <property name="jants.release.category" value="prompt"/>
                <property name="jants.release.api"      value="-api"/>
                <antcall target="-label"/>
        </target>

        <!-- =================================================================== -->
        <target name="undo"
                description="Remove artifacts from a partially complete build.">
                <input message="Which version do you wish to undo?" addproperty="jants.build.version"/>
                <!-- Remove any label for the given version -->
                <ccrmlabel labelname="${ant.project.name}-${jants.build.version}"/>
                <!-- Remove any network drive mapping, and remove any view corresponding to the label -->
                <ccrmview viewname="${user.name}_jats_build_${ant.project.name}-${jants.build.version}" unmap="${jants.map.drive}"/>
        </target>

        <!-- =================================================================== -->
        <target name="undo-api"
                description="Remove artifacts from a partially complete API build.">
                <input message="Which version API do you wish to undo?" addproperty="jants.build.version"/>
                <!-- Remove any label for the given version -->
                <ccrmlabel labelname="${ant.project.name}-api-${jants.build.version}"/>
                <!-- Remove any network drive mapping, and remove any view corresponding to the label -->
                <ccrmview viewname="${user.name}_jats_build_${ant.project.name}-api-${jants.build.version}" unmap="${jants.map.drive}"/>
        </target>


        <!-- =================================================================== -->
        <!--  SILENT TARGETS                                                     -->
        <!-- =================================================================== -->

        <!-- =================================================================== -->
        <target name="-label">
                <jats package="${ant.project.name}${jants.release.api}" scope="mas">
                        <cclabel findCheckouts = "true"
                                         type          = "${jants.release.category}"
                                         mkview        = "true"
                                         mapview       = "${jants.map.drive}"
                                         labelname     = "jants.build.label"
                                         viewname      = "jants.build.view.name"
                                         viewpath      = "jants.build.view.path"
                                         version       = "jants.build.version"/>
                </jats>
                <ant dir="${jants.build.view.path}" inheritAll="false" inheritRefs="false" target="-dpkg-release-${jants.release.category}">
                        <property name="jants.build.version" value="${jants.build.version}"/>
                </ant>
                <ccrmview viewname="${jants.build.view.name}" unmap="${jants.map.drive}"/>
                <cclocklabel labelname="${jants.build.label}${jants.release-api}"/>
        </target>

        <!-- =================================================================== -->
        <target name="-dpkg-release-patch">
                <property name="jants.release.category" value="patch"/>
                <antcall target="-release${jants.release.api}"/>
        </target>

        <!-- =================================================================== -->
        <target name="-dpkg-release-minor">
                <property name="jants.release.category" value="minor"/>
                <antcall target="-release${jants.release.api}"/>
        </target>

        <!-- =================================================================== -->
        <target name="-dpkg-release-major">
                <property name="jants.release.category" value="major"/>
                <antcall target="-release${jants.release.api}"/>
        </target>

        <!-- =================================================================== -->
        <target name="-dpkg-release-prompt">
                <property name="jants.release.category" value="force"/>
                <antcall target="-release${jants.release.api}"/>
        </target>

        <!-- =================================================================== -->
        <target name="-release" depends="package,test">
                <!-- Clean the package directory -->
                <delete dir="pkg"/>
                <mkdir dir="pkg"/>

                <!-- Prepare the package entities -->
                <!-- [insert tasks here to copy relevant non-API files to their -->
                <!--  correct location within pkg]                              -->

                <!-- And perform the dpkg release -->
                <jats package="${ant.project.name}${jants.release.api}" scope="mas">
                        <release type="${jants.release.category}" version="${jants.build.version}"/>
                </jats>
        </target>

        <!-- =================================================================== -->
        <target name="-release-api" depends="package-api">
                <!-- Clean the package directory -->
                <delete dir="pkg"/>
                <mkdir dir="pkg"/>

                <!-- Prepare the package entities -->
                <!-- [insert tasks here to copy relevant API files to their     -->
                <!--  correct location within pkg]                              -->

                <!-- And perform the dpkg release -->
                <jats package="${ant.project.name}${jants.release.api}" scope="mas">
                        <release type="${jants.release.category}" version="${jants.build.version}"/>
                </jats>
        </target>

</project>