<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project default="dist" name="jarbuild">
	<!--ANT 1.7 is required -->
	<property name="buildjar.version" value="1.1" />
	<property file="build.properties" />
	<property name="build.dir" value="${basedir}/build" />
	<property name="build.src" value="${basedir}/src" />
	<property name="build.classes" value="${build.dir}/classes" />
	<property name="build.javadoc" value="${build.dir}/javadoc" />
	<property name="test.src" value="${basedir}/test" />
	<property name="test.classes" value="${build.dir}/test-classes" />
	<property name="debug" value="on" />

	<path id="build.classpath">
		<fileset dir="lib" includes="**/*.jar" />
	</path>

	<path id="test.classpath.compile">
		<path refid="build.classpath" />
		<pathelement path="${build.classes}" />
	</path>

	<path id="test.classpath.run">
		<path refid="test.classpath.compile" />
		<pathelement path="${test.classes}" />
	</path>


	<!-- ***** Help ***** -->
	<target name="help" description="Display detailed usage information">
		<echo>Type ant -p</echo>
	</target>

	<!-- ***** Clean ***** -->
	<target name="clean" description="Clean temporary directories">
		<delete dir="${build.dir}" />
	</target>

	<!-- ***** Compile ***** -->
	<target name="compile" description="Compile main code">
		<mkdir dir="${build.dir}/classes" />
		<javac srcdir="${build.src}" destdir="${build.classes}" debug="${debug}" deprecation="on" includeantruntime="false">
			<classpath refid="test.classpath.compile" />
		</javac>
	</target>

	<!-- ***** Compile test ***** -->
	<target name="compile-test" description="Compile test code">
		<mkdir dir="${test.classes}" />
		<javac srcdir="${test.src}" destdir="${test.classes}" debug="${debug}" deprecation="on" includeantruntime="false">
			<classpath refid="test.classpath.compile" />
		</javac>
	</target>


	<!-- ***** Test ***** -->
	<target name="test" description="Run unit tests" depends="clean,compile,compile-test">
		<mkdir dir="${build.dir}/test-reports" />
		<junit printsummary="yes" haltonfailure="no">
			<classpath refid="test.classpath.run" />
			<formatter type="plain" usefile="true" />
			<batchtest fork="yes" todir="${build.dir}/test-reports/">
				<fileset dir="test">
					<include name="**/*Test.java" />
				</fileset>
			</batchtest>
		</junit>
	</target>

	<!-- ***** JavaDoc ***** -->
	<target name="javadoc" description="Javadoc construction">
		<javadoc sourcepath="${build.src}" destdir="${build.javadoc}">
			<classpath>
				<fileset dir="lib" includes="**/*.jar" />
			</classpath>
		</javadoc>
	</target>

	<!-- ***** Dist ***** -->
	<target name="dist" description="Build distribution" depends="clean,compile,javadoc">
		<!-- -->
		<buildnumber file="build.num" description="Id of the build" />
		<!-- AUTOMATIC MANAGEMENT -->
		<property name="dist.version" value="${product.revision.major}.${product.revision.minor}.${build.number}" />
		<property name="dist.name" value="${product.name}-${dist.version}" />
		<property name="dist.dir" value="${basedir}/dist/${dist.name}" />

		<!-- -->
		<mkdir dir="${dist.dir}" />

		<!-- -->
		<copy file="LICENSE" todir="${dist.dir}/" overwrite="true" />

		<!-- Package main -->
		<property name="dist.jar" value="${dist.dir}/${dist.name}.jar" />
		<tstamp>
			<format property="dist.time" pattern="dd/MM/yyyy HH:mm:ss" />
			<!-- TODAY -->
		</tstamp>
		<jar destfile="${dist.jar}">
			<manifest>
				<attribute name="Built-By" value="${user.name} using ant" />
				<attribute name="Built-Date" value="${dist.time}" />
			</manifest>
			<fileset dir="${build.classes}" />
			<zipfileset dir="${basedir}/" includes="LICENSE" />
		</jar>

		<!-- Package sources -->
		<property name="dist.srczip" value="${dist.dir}/${dist.name}-sources.zip" />
		<zip destfile="${dist.srczip}" update="true" preserve0permissions="true">
			<fileset dir="${basedir}/src" />
			<zipfileset dir="${basedir}/" includes="LICENSE" />
		</zip>

		<!-- Package Javadoc -->
		<property name="dist.javadoc.zip" value="${dist.dir}/${dist.name}-javadoc.zip" />
		<zip destfile="${dist.javadoc.zip}" update="true" preserve0permissions="true">
			<fileset dir="${build.javadoc}" />
			<zipfileset dir="${basedir}/" includes="LICENSE" />
		</zip>

		<!-- Package lib -->
		<copy todir="${dist.dir}/lib" overwrite="true">
			<fileset dir="lib" excludes="hamcrest-core*,junit*" />
		</copy>

	</target>
</project>