1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/visitor/21-clientprovider/build.xml Sat Jun 14 09:59:16 2008 +0200
1.3 @@ -0,0 +1,96 @@
1.4 +<?xml version="1.0" encoding="UTF-8"?>
1.5 +<project name="Build Script" default="test" basedir=".">
1.6 + <target name="clean">
1.7 + <delete dir="build"/>
1.8 + </target>
1.9 +
1.10 + <target name="compile" depends="build"/>
1.11 + <target name="build" depends="-libraries">
1.12 + <antcall target="-build-one">
1.13 + <param name="version" value="api1.0"/>
1.14 + </antcall>
1.15 + <antcall target="-build-one">
1.16 + <param name="version" value="api2.0"/>
1.17 + </antcall>
1.18 +
1.19 + <antcall target="-build-one">
1.20 + <param name="version" value="test"/>
1.21 + <param name="cp" value="build/api1.0/classes:${junit.jar}"/>
1.22 + </antcall>
1.23 +
1.24 + <echo level="info" message="Next compilation will fails, as adding methods into interface is not binary compatible"/>
1.25 + <antcall target="-build-one">
1.26 + <param name="version" value="test"/>
1.27 + <param name="out" value="will-not-compile"/>
1.28 + <param name="cp" value="build/api2.0/classes:${junit.jar}"/>
1.29 + <param name="failonerror" value="false"/>
1.30 + </antcall>
1.31 +
1.32 + <antcall target="-build-one">
1.33 + <param name="version" value="test2.0"/>
1.34 + <param name="cp" value="build/api2.0/classes:build/test/classes:${junit.jar}"/>
1.35 + </antcall>
1.36 + </target>
1.37 +
1.38 + <target name="test" depends="build">
1.39 + <echo level="info" message="PrintVisitor on old API. This should succeeds."/>
1.40 + <antcall target="-run-one">
1.41 + <param name="version" value="api1.0"/>
1.42 + </antcall>
1.43 + <echo level="info" message="PrintVisitor on old API. This would not compile, but it runs as it does not deal with minus at all."/>
1.44 + <antcall target="-run-one">
1.45 + <param name="version" value="api2.0"/>
1.46 + </antcall>
1.47 + <echo level="info" message="PrintVisitor on new API. This yields runtime error."/>
1.48 + <antcall target="-run-one">
1.49 + <param name="test" value="test2.0"/>
1.50 + <param name="extra.cp" value="build/test/classes"/>
1.51 + <param name="version" value="api2.0"/>
1.52 + </antcall>
1.53 + </target>
1.54 +
1.55 + <!-- support methods -->
1.56 +
1.57 + <target name="-libraries">
1.58 + <ant dir="../../libs/"/>
1.59 +
1.60 + <property name="junit.jar" location="../../libs/dist/junit-4.4.jar"/>
1.61 + </target>
1.62 +
1.63 + <target name="-run-one">
1.64 + <fail message="You need to specify API version number" unless="version"/>
1.65 + <property name="test" value="test"/>
1.66 + <mkdir dir="build/${test}results${version}"/>
1.67 + <junit dir="build/test/classes" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
1.68 + <batchtest todir="build/${test}results${version}">
1.69 + <fileset dir="build/${test}/classes">
1.70 + <filename name="**/*Test.class"/>
1.71 + </fileset>
1.72 + </batchtest>
1.73 + <classpath>
1.74 + <path location="build/${version}/classes"/>
1.75 + <path location="build/${test}/classes"/>
1.76 + <path location="${junit.jar}"/>
1.77 + <path path="${extra.cp}"/>
1.78 + </classpath>
1.79 + <formatter type="brief" usefile="false"/>
1.80 + <formatter type="xml"/>
1.81 + </junit>
1.82 + </target>
1.83 +
1.84 + <target name="-build-one">
1.85 + <fail message="You need to specify version number" unless="version"/>
1.86 +
1.87 + <property name="cp" value=""/>
1.88 + <property name="out" value="${version}"/>
1.89 + <property name="failonerror" value="true"/>
1.90 + <mkdir dir="build/${out}/classes"/>
1.91 + <javac
1.92 + srcdir="src-${version}"
1.93 + destdir="build/${out}/classes"
1.94 + source="1.5" target="1.5"
1.95 + classpath="${cp}"
1.96 + failonerror="${failonerror}"
1.97 + />
1.98 + </target>
1.99 +</project>