blob: 4dc5a1d54a6ceba14f9f91558237527ffbf74814 [file] [log] [blame]
<project name="AppEnginePipeline" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<description>
Pipeline is a framework for building dynamic, complex workflows on Google App Engine.
</description>
<!-- Ivy Configurations -->
<property name="thirdparty" value="thirdparty"/>
<property name="sdk" value="sdk"/>
<property name="test" value="test"/>
<property name="sdk_version" value="[1.9.1,1.10)"/>
<property name="java_version" value="1.7" />
<!-- Paths -->
<property name="src" location="src/main/java"/>
<property name="test_src" location="src/test/java"/>
<property name="build" location="target/classes"/>
<property name="test_build" location="target/test-classes"/>
<property name="javadoc" location="javadoc"/>
<property name="lib" location="lib"/>
<property name="lib_thirdparty" location="${lib}/${thirdparty}"/>
<property name="lib_sdk" location="${lib}/${sdk}"/>
<property name="lib_test" location="${lib}/${test}"/>
<property name="dist" location="dist"/>
<property name="ui" location="src/main/resources/ui"/>
<property name="example" location="example"/>
<property name="example_src" location="${example}/src"/>
<property name="example_war" location="${example}/war"/>
<!-- Ivy Bootstrap Properties -->
<property name="ivy_version" value="2.3.0"/>
<property name="mvn_repo" value="http://repo2.maven.org/maven2"/>
<property name="ivy_jar" value="ivy-${ivy_version}.jar"/>
<property name="ivy_url" value="${mvn_repo}/org/apache/ivy/ivy/${ivy_version}/${ivy_jar}"/>
<property name="ivy_dir" value="${lib}/ivy"/>
<!-- Targets for the Pipeline framework -->
<target name="init">
<mkdir dir="${build}"/>
</target>
<target name="ivy_probe" description="Check if Ivy is already loaded">
<condition property="ivy_found">
<typefound uri="antlib:org.apache.ivy.ant" name="retrieve"/>
</condition>
</target>
<target name="ivy_download" depends="ivy_probe,init" unless="ivy_found">
<mkdir dir="${ivy_dir}"/>
<get src="${ivy_url}" dest="${ivy_dir}/${ivy_jar}" usetimestamp="true"/>
</target>
<target name="ivy_init" depends="ivy_probe,ivy_download" unless="ivy_found">
<typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader">
<classpath>
<pathelement location="${ivy_dir}/${ivy_jar}"/>
</classpath>
</typedef>
<fail>
<condition>
<not>
<typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/>
</not>
</condition>
You need Apache Ivy 2.0 or later from http://ant.apache.org/
It could not be loaded from ${ivy_url}
</fail>
</target>
<target name="dependencies_thirdparty" depends="ivy_init">
<ivy:retrieve conf="thirdparty" pattern="${lib_thirdparty}/[artifact]-[revision].[ext]"
sync="true"/>
</target>
<target name="dependencies_sdk" depends="ivy_init">
<ivy:retrieve conf="sdk" pattern="${lib_sdk}/[artifact]-[revision].[ext]" sync="true"/>
</target>
<target name="dependencies_test" depends="ivy_init">
<ivy:retrieve conf="test" pattern="${lib_test}/[artifact]-[revision].[ext]" sync="true"/>
</target>
<target name="compile" depends="init,dependencies_thirdparty,dependencies_sdk">
<javac srcdir="${src}" destdir="${build}" debug="on" debuglevel="lines,source"
source="${java_version}" target="${java_version}" includeantruntime="false">
<compilerarg value="-Xlint:all"/>
<classpath>
<fileset dir="${lib_thirdparty}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="dist" depends="compile">
<mkdir dir="${dist}"/>
<jar jarfile="${dist}/appengine-pipeline.jar" basedir="${build}">
<manifest>
<section name="com/google/appengine/tools/pipeline">
<attribute name="Specification-Vendor" value="Google" />
<attribute name="Implementation-Vendor" value="Google" />
<attribute name="Implementation-Vendor-Id" value="com.google.appengine.tools" />
</section>
</manifest>
<zipfileset dir="${src}"/>
<zipfileset dir="${ui}" prefix="com/google/appengine/tools/pipeline/impl/servlets/ui"/>
</jar>
<copy todir="${dist}">
<fileset dir="${lib_thirdparty}"/>
</copy>
</target>
<target name="test_init">
<mkdir dir="${test_build}"/>
</target>
<target name="test_compile"
depends="test_init,dependencies_test,dependencies_sdk,dist,compile_example">
<javac srcdir="${test_src}" destdir="${test_build}" debug="on" debuglevel="lines,source"
source="${java_version}" target="${java_version}" includeantruntime="false">
<classpath>
<fileset dir="${dist}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_test}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
<pathelement path="${example_war}/WEB-INF/classes"/>
</classpath>
</javac>
</target>
<target name="test_small" depends="dependencies_test,dependencies_sdk,dist,test_compile">
<junit filtertrace="off" fork="yes" haltonfailure="yes">
<test name="com.google.appengine.tools.pipeline.impl.backend.AppEngineTaskQueueTest"/>
<test name="com.google.appengine.tools.pipeline.BarrierTest"/>
<test name="com.google.appengine.tools.pipeline.DelayedValueTest"/>
<test name="com.google.appengine.tools.pipeline.FanoutTaskTest"/>
<test name="com.google.appengine.tools.pipeline.FutureListTest"/>
<test name="com.google.appengine.tools.pipeline.JsonClassFilterHandlerTest"/>
<test name="com.google.appengine.tools.pipeline.JsonListHandlerTest"/>
<test name="com.google.appengine.tools.pipeline.MiscPipelineTest"/>
<test name="com.google.appengine.tools.pipeline.OrphanedJobGraphTest"/>
<test name="com.google.appengine.tools.pipeline.StaticContentHandlerTest"/>
<test name="com.google.appengine.tools.pipeline.UserGuideTest"/>
<classpath>
<pathelement location="${test_build}"/>
<fileset dir="${dist}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_test}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
<pathelement path="${example_war}/WEB-INF/classes"/>
</classpath>
<formatter type="brief" usefile="false"/>
</junit>
</target>
<target name="test" depends="dependencies_test,dependencies_sdk,dist,test_compile,test_small">
<junit filtertrace="off" fork="yes" haltonfailure="yes">
<test name="com.google.appengine.tools.pipeline.GCDTest"/>
<test name="com.google.appengine.tools.pipeline.LetterCounterTest"/>
<test name="com.google.appengine.tools.pipeline.PipelinesErrorHandlingTest"/>
<test name="com.google.appengine.tools.pipeline.RetryTest"/>
<classpath>
<pathelement location="${test_build}"/>
<fileset dir="${dist}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_test}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
<pathelement path="${example_war}/WEB-INF/classes"/>
</classpath>
<formatter type="brief" usefile="false"/>
</junit>
</target>
<target name="runtest" description="Runs the test specified on the command line with -DtestName="
depends="dist,test_compile">
<fail message="You must run this target with -DtestName=TestName" unless="testName" />
<junit printsummary="withOutAndErr" fork="yes" haltonfailure="yes">
<batchtest>
<fileset dir="${test_src}">
<include name="**/${testName}.java" />
</fileset>
</batchtest>
<classpath>
<pathelement location="${test_build}"/>
<fileset dir="${dist}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_test}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
<pathelement path="${example_war}/WEB-INF/classes"/>
</classpath>
<formatter type="brief" usefile="false"/>
</junit>
</target>
<target name="javadoc" depends="dependencies_test,dependencies_sdk,dependencies_thirdparty">
<delete dir="${javadoc}"/>
<mkdir dir="${javadoc}"/>
<javadoc packagenames="com.google.appengine.tools.pipeline" sourcepath="${src}"
destdir="${javadoc}" author="false" version="false" use="true"
windowtitle="App Engine Pipeline Framework">
<classpath>
<fileset dir="${lib_thirdparty}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
</classpath>
<doctitle>
<![CDATA[<h1>Google App Engine Pipeline Framework</h1>]]>
</doctitle>
<bottom>
<![CDATA[<i>Copyright &#169; 2011 Google Inc. All Rights Reserved.</i>]]>
</bottom>
</javadoc>
</target>
<target name="clean" depends="clean_example">
<delete dir="${build}"/>
<delete dir="${dist}"/>
<delete dir="${test_build}"/>
<delete dir="${lib}"/>
<delete dir="${javadoc}"/>
</target>
<!-- Targets for Pipeline example -->
<target name="copy_libs_to_example" depends="dist,javadoc,dependencies_sdk">
<mkdir dir="${example_war}/WEB-INF/lib"/>
<copy todir="${example_war}/WEB-INF/lib">
<fileset dir="${dist}"/>
<fileset dir="${lib_sdk}"/>
</copy>
<symlink link="${example_war}/javadoc" resource="${javadoc}" overwrite="true"/>
</target>
<target name="compile_example" depends="dependencies_test,dependencies_sdk,copy_libs_to_example">
<mkdir dir="${example_war}/WEB-INF/classes"/>
<javac srcdir="${example_src}" destdir="${example_war}/WEB-INF/classes" debug="on"
source="${java_version}" target="${java_version}" debuglevel="lines,source"
includeantruntime="false">
<compilerarg value="-Xlint:all"/>
<classpath>
<fileset dir="${example_war}/WEB-INF/lib"/>
<fileset dir="${lib_sdk}">
<include name="*.jar"/>
</fileset>
<fileset dir="${lib_test}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="clean_example">
<delete dir="${example_war}/WEB-INF/lib"/>
<delete dir="${example_war}/WEB-INF/classes"/>
<delete dir="${example_war}/WEB-INF/appengine-generated"/>
<delete dir="${example_war}/javadoc"/>
</target>
</project>