<project
	xmlns:ivy="antlib:org.apache.ivy.ant"
	xmlns:spring-boot="antlib:org.springframework.boot.ant"
	name="spring-boot-sample-ant"
	default="build">

	<description>
		Sample ANT build script for a Spring Boot executable JAR project. Uses ivy for
		dependency management and spring-boot-antlib for additional tasks. Run with
		'$ ant -lib ivy-2.2.jar spring-boot-antlib.jar' (substitute the location of your
		actual jars). Run with '$ java -jar target/*.jar'.
	</description>

	<property name="spring-boot.version" value="2.0.0.BUILD-SNAPSHOT" />
	<property name="lib.dir" location="${basedir}/target/lib" />
	<property name="start-class" value="sample.ant.SampleAntApplication" />

	<target name="resolve" description="--> retrieve dependencies with ivy">
		<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[type]-[revision].[ext]" />
	</target>

	<target name="classpaths" depends="resolve">
		<path id="compile.classpath">
			<fileset dir="${lib.dir}/compile" includes="*.jar" />
		</path>
	</target>

	<target name="init" depends="classpaths">
		<mkdir dir="target/classes" />
	</target>

	<target name="compile" depends="init" description="compile">
		<javac srcdir="src/main/java" destdir="target/classes" classpathref="compile.classpath" />
	</target>

	<target name="clean" description="cleans all created files/dirs">
		<delete dir="target" />
	</target>

	<target name="build" depends="compile">
		<spring-boot:exejar destfile="target/${ant.project.name}-${spring-boot.version}.jar" classes="target/classes">
			<spring-boot:lib>
				<fileset dir="${lib.dir}/runtime" />
			</spring-boot:lib>
		</spring-boot:exejar>
	</target>
	<!-- Manual equivalent of the build target -->
	<target name="manual" depends="compile">
		<jar destfile="target/${ant.project.name}-${spring-boot.version}.jar" compress="false">
			<mappedresources>
				<fileset dir="target/classes" />
				<globmapper from="*" to="BOOT-INF/classes/*"/>
			</mappedresources>
			<mappedresources>
				<fileset dir="src/main/resources" erroronmissingdir="false"/>
				<globmapper from="*" to="BOOT-INF/classes/*"/>
			</mappedresources>
			<mappedresources>
				<fileset dir="${lib.dir}/runtime" />
				<globmapper from="*" to="BOOT-INF/lib/*"/>
			</mappedresources>
			<zipfileset src="${lib.dir}/loader/spring-boot-loader-jar-${spring-boot.version}.jar" />
			<manifest>
				<attribute name="Main-Class" value="org.springframework.boot.loader.JarLauncher" />
				<attribute name="Start-Class" value="${start-class}" />
			</manifest>
		</jar>
	</target>
</project>
