<?xml version="1.0"?>

<project name="vaadin" basedir="." default="package" xmlns:ivy="antlib:org.apache.ivy.ant">
	<include file="common.xml" as="common" />

	<path id="vaadin.buildhelpers.classpath" location="${vaadin.basedir}/buildhelpers/result/classes" />

	<!-- ================================= 
          target: all              
         ================================= -->
	<!--<target name="all" description="Compiles all parts of the project" depends="buildhelpers,theme-compiler,shared,server,client">-->
	<target name="package" description="Compiles and packages all modules in the project" depends="buildorder">
		<subant buildpathref="build-path" target="publish-local">
		</subant>
	</target>

	<target name="buildorder" depends="official.build.checks">
		<!-- Find out a good build order -->
		<ivy:buildlist reference="ivy.build.path">
			<fileset dir="." includes="**/build.xml">
				<exclude name="build.xml" />
				<exclude name="build/**" />
				<exclude name="buildhelpers/**" />
			</fileset>
		</ivy:buildlist>
		<path id="build-path">
			<path location="buildhelpers/build.xml"/>
			<path refid="ivy.build.path" />
		</path>
	</target>
	<target name="clean" depends="buildorder">
		<subant buildpathref="build-path" target="clean">
		</subant>
		<delete dir="result" />
		<!-- Clean IVY cache (~/.ivy2) so no old artifacts are fetched from there (leave everything but Vaadin artifacts) -->
		<delete dir="${ivy.cache.dir}/com.vaadin">
		</delete>

	</target>

	<target name="tests" depends="buildorder">
		<property name="war.file" location="result/artifacts/${vaadin.version}/vaadin-uitest/vaadin-uitest-${vaadin.version}.war" />
		<parallel>
			<sequential>
				<!-- Sleep before running integration tests so testbench tests have time to compile and start -->
				<sleep minutes="4" />
				<ant antfile="uitest/integration_tests.xml" target="integration-test-all" inheritall="false" inheritrefs="false">
					<property name="demo.war" value="${war.file}" />
				</ant>
			</sequential>
			<subant buildpathref="build-path" target="tests" />
			<ant antfile="uitest/test.xml" target="test-package">
				<property name="war.file" location="${war.file}" />
			</ant>
		</parallel>
	</target>

	<target name="official.build.checks" if="build.release">
		<condition property="java.version.matches">
			<equals arg1="${ant.java.version}" arg2="${vaadin.java.version}" />
		</condition>
		<fail unless="java.version.matches" message="Java version is ${ant.java.version}, but Vaadin must be compiled with genuine Java ${vaadin.java.version} compiler." />
		<echo>Java version is ${ant.java.version} as required.</echo>
	</target>

</project>
