<?xml version="1.0" encoding="UTF-8"?>

<project name="snappy-java-from-maven" default="package" basedir=".">

	<property file="${user.home}/.m2/maven.properties" />
	<property file="maven-build.properties" />

	<property name="maven.build.finalName" value="snappy" />
	<property name="maven.build.dir" value="target" />
	<property name="maven.build.outputDir" value="${maven.build.dir}/classes" />
	<property name="maven.build.srcDir.0" value="src/main/java" />
	<property name="maven.build.resourceDir.0" value="src/main/java" />
	<property name="maven.build.resourceDir.1" value="src/main/resources" />
	<property name="maven.build.resourceDir.2" value="." />
	<property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes" />
	<property name="maven.build.testDir.0" value="src/test/java" />
	<property name="maven.build.testResourceDir.0" value="src/test/java" />
	<property name="maven.build.testResourceDir.1" value="src/test/resources" />
	<property name="maven.test.reports" value="${maven.build.dir}/test-reports" />
	<property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site" />

	<property name="maven.repo.local" value="${user.home}/.m2/repository" />
	<property name="maven.settings.offline" value="false" />
	<property name="maven.settings.interactiveMode" value="true" />

	<!-- ====================================================================== -->
	<!-- Defining classpaths                                                    -->
	<!-- ====================================================================== -->

	<path id="build.classpath">
	</path>
	<path id="build.test.classpath">
	</path>

	<!-- ====================================================================== -->
	<!-- Cleaning up target                                                     -->
	<!-- ====================================================================== -->

	<target name="clean" description="Clean the output directory">
		<delete dir="${maven.build.dir}" />
	</target>

	<!-- ====================================================================== -->
	<!-- Compilation target                                                     -->
	<!-- ====================================================================== -->

	<target name="compile" description="Compile the code">
		<mkdir dir="${maven.build.outputDir}" />
		<javac destdir="${maven.build.outputDir}" nowarn="false" debug="true" optimize="false" deprecation="true" target="1.6" verbose="false" fork="false" source="1.6">
			<src>
				<pathelement location="${maven.build.srcDir.0}" />
			</src>
			<classpath refid="build.classpath" />
		</javac>
		<copy todir="${maven.build.outputDir}">
			<fileset dir="${maven.build.resourceDir.0}">
				<include name="org/xerial/snappy/VERSION" />
			</fileset>
		</copy>
		<copy todir="${maven.build.outputDir}">
			<fileset dir="${maven.build.resourceDir.1}">
				<include name="org/xerial/snappy/*.bytecode" />
				<include name="org/xerial/snappy/native/**" />
			</fileset>
		</copy>
		<mkdir dir="${maven.build.outputDir}/META-INF/maven/org.xerial.snappy/snappy-java" />
		<copy todir="${maven.build.outputDir}/META-INF/maven/org.xerial.snappy/snappy-java">
			<fileset dir="${maven.build.resourceDir.2}">
				<include name="LICENSE*" />
			</fileset>
		</copy>
	</target>

	<!-- ====================================================================== -->
	<!-- Test-compilation target                                                -->
	<!-- ====================================================================== -->

	<target name="compile-tests" depends="compile" description="Compile the test code" unless="maven.test.skip">
		<mkdir dir="${maven.build.testOutputDir}" />
		<javac destdir="${maven.build.testOutputDir}" nowarn="false" debug="true" optimize="false" deprecation="true" target="1.6" verbose="false" fork="false" source="1.6">
			<src>
				<pathelement location="${maven.build.testDir.0}" />
			</src>
			<classpath>
				<path refid="build.test.classpath" />
				<pathelement location="${maven.build.outputDir}" />
			</classpath>
		</javac>
		<copy todir="${maven.build.testOutputDir}">
			<fileset dir="${maven.build.testResourceDir.0}">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
	</target>

	<!-- ====================================================================== -->
	<!-- Run all tests                                                          -->
	<!-- ====================================================================== -->

	<target name="test" depends="compile-tests, junit-missing" unless="junit.skipped" description="Run the test cases">
		<mkdir dir="${maven.test.reports}" />
		<junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
			<sysproperty key="basedir" value="." />
			<formatter type="xml" />
			<formatter type="plain" usefile="false" />
			<classpath>
				<path refid="build.test.classpath" />
				<pathelement location="${maven.build.outputDir}" />
				<pathelement location="${maven.build.testOutputDir}" />
			</classpath>
			<batchtest todir="${maven.test.reports}" unless="test">
				<fileset dir="${maven.build.testDir.0}">
					<include name="**/Test*.java" />
					<include name="**/*Test.java" />
					<include name="**/*TestCase.java" />
					<exclude name="**/*Abstract*Test.java" />
				</fileset>
			</batchtest>
			<batchtest todir="${maven.test.reports}" if="test">
				<fileset dir="${maven.build.testDir.0}">
					<include name="**/${test}.java" />
					<exclude name="**/*Abstract*Test.java" />
				</fileset>
			</batchtest>
		</junit>
	</target>

	<target name="test-junit-present">
		<available classname="junit.framework.Test" property="junit.present" />
	</target>

	<target name="test-junit-status" depends="test-junit-present">
		<condition property="junit.missing">
			<and>
				<isfalse value="${junit.present}" />
				<isfalse value="${maven.test.skip}" />
			</and>
		</condition>
		<condition property="junit.skipped">
			<or>
				<isfalse value="${junit.present}" />
				<istrue value="${maven.test.skip}" />
			</or>
		</condition>
	</target>

	<target name="junit-missing" depends="test-junit-status" if="junit.missing">
		<echo>=================================== WARNING ===================================</echo>
		<echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
		<echo>===============================================================================</echo>
	</target>

	<!-- ====================================================================== -->
	<!-- Javadoc target                                                         -->
	<!-- ====================================================================== -->

	<target name="javadoc" description="Generates the Javadoc of the application">
		<javadoc sourcepath="${maven.build.srcDir.0}" packagenames="*" destdir="${maven.reporting.outputDirectory}/apidocs" access="public" old="false" verbose="false" locale="en_US" version="true" use="true" author="true" splitindex="false" nodeprecated="false" nodeprecatedlist="false" notree="false" noindex="false" nohelp="false" nonavbar="false" serialwarn="false" charset="UTF-8" linksource="false" breakiterator="false" />
	</target>

	<!-- ====================================================================== -->
	<!-- Package target                                                         -->
	<!-- ====================================================================== -->

	<target name="package" depends="compile,test" description="Package the application">
		<jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar" compress="true" index="true" basedir="${maven.build.outputDir}" excludes="**/package.html" />
	</target>

	<!-- ====================================================================== -->
	<!-- A dummy target for the package named after the type it creates         -->
	<!-- ====================================================================== -->

	<target name="jar" depends="package" description="Builds the jar for the application" />

	<!-- ====================================================================== -->
	<!-- Download dependencies target                                           -->
	<!-- ====================================================================== -->

	<target name="test-offline">
		<condition property="maven.mode.offline">
			<equals arg1="${maven.settings.offline}" arg2="true" />
		</condition>
	</target>

</project>
