blob: 479d6bd4b3c65a37d0ae8422229e03dc5e3b5016 [file] [log] [blame]
<project name="samples-common">
<property name="gwt.root" location="../.." />
<property name="project.tail" value="samples/${sample.root}" />
<import file="${gwt.root}/common.ant.xml" />
<!--
Number of localworkers for sample compilation. This depends on your
hardware, so it's a good candidate to specify in local.ant.properties
if this default isn't good for you. Ideally, it should approximate
the number of CPU cores in your machine.
-->
<property name="gwt.samples.localworkers" value="2" />
<property name="sample.lower" value="${sample.root}" />
<property name="sample.upper" value="${sample.module}" />
<property.ensure name="gwt.user.jar" location="${gwt.build.lib}/gwt-user.jar" />
<property.ensure name="gwt.dev.jar" location="${gwt.build.lib}/gwt-dev.jar" />
<!-- Mirror directory for scripts; makes building distro easier -->
<property name="samples.scripts" value="${gwt.build.out}/samples-scripts" />
<!-- Use the uppercase name rather than the lowercase name -->
<property name="sample.build" value="${gwt.build.out}/samples/${sample.upper}" />
<path id="gae.extraclasspath">
<pathelement location="${gwt.tools.lib}/appengine/appengine-api-1.0-sdk-1.3.4.jar"/>
<pathelement location="${gwt.tools.lib}/appengine/geronimo-jpa_3.0_spec-1.1.1.jar"/>
<pathelement location="${gwt.tools.lib}/appengine/datanucleus-appengine-1.0.7.final.jar"/>
</path>
<!-- The libraries required by the server that will be copied into WEB-INF/lib. -->
<fileset id="sample.server.libs" dir="${gwt.tools.lib}">
<include name="" />
</fileset>
<target name="source" description="Copy source to the output folder">
<mkdir dir="${sample.build}/src" />
<copy todir="${sample.build}/src">
<fileset dir="src" />
</copy>
<if>
<available file="war" type="dir" />
<then>
<mkdir dir="${sample.build}/war" />
<copy todir="${sample.build}/war">
<fileset dir="war" excludes="WEB-INF/classes/**"/>
</copy>
</then>
</if>
<if>
<available file="pom.xml"/>
<then>
<copy tofile="${sample.build}/pom.xml" file="pom.xml"/>
</then>
</if>
<if>
<available file="README-MAVEN.txt"/>
<then>
<copy tofile="${sample.build}/README-MAVEN.txt" file="README-MAVEN.txt"/>
</then>
</if>
<if>
<available file="README.txt"/>
<then>
<copy tofile="${sample.build}/README.txt" file="README.txt"/>
</then>
</if>
<if>
<available file="user-build.xml"/>
<then>
<copy tofile="${sample.build}/build.xml" file="user-build.xml"/>
</then>
</if>
<if>
<available file="user-project"/>
<then>
<copy tofile="${sample.build}/.project" file="user-project"/>
</then>
</if>
<if>
<available file="user-classpath"/>
<then>
<copy tofile="${sample.build}/.classpath" file="user-classpath"/>
</then>
</if>
<if>
<available file="user-settings"/>
<then>
<copy todir="${sample.build}/.settings">
<fileset dir="user-settings"/>
</copy>
</then>
</if>
</target>
<target name="serverlibs" description="Copy server libs to the output folder">
<mkdir dir="${sample.build}/war/WEB-INF/lib" />
<copy todir="${sample.build}/war/WEB-INF/lib/" flatten="true">
<fileset refid="sample.server.libs" />
</copy>
</target>
<target name="compile" description="Compile all java files">
<mkdir dir="${sample.build}/war/WEB-INF/classes" />
<gwt.javac destdir="${sample.build}/war/WEB-INF/classes"
excludes="**/super/**">
<classpath>
<pathelement location="${gwt.user.jar}" />
<pathelement location="${gwt.dev.jar}" />
<path refid="sample.extraclasspath" />
<path refid="gae.extraclasspath" />
</classpath>
</gwt.javac>
</target>
<target name="gwtc" description="Compile to JavaScript">
<outofdate>
<sourcefiles>
<fileset dir="${sample.path}" />
<fileset dir="${sample.build}/war/WEB-INF/classes" />
<fileset file="${gwt.user.jar}" />
<fileset file="${gwt.dev.jar}" />
<path refid="sample.extraclasspath" />
</sourcefiles>
<targetfiles path="${sample.build}/war/${sample.lower}/${sample.lower}.nocache.js" />
<sequential>
<mkdir dir="${sample.build}/war" />
<gwt.timer name="${sample.upper} with ${gwt.samples.localworkers} localWorkers">
<java dir="${sample.build}" classname="com.google.gwt.dev.Compiler"
fork="yes" failonerror="true">
<classpath>
<pathelement path="${sample.path}" />
<path refid="sample.extraclasspath" />
<pathelement location="${sample.build}/war/WEB-INF/classes" />
<pathelement location="${gwt.user.jar}" />
<pathelement location="${gwt.dev.jar}" />
<pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA.jar" />
<pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA-sources.jar" />
</classpath>
<jvmarg value="-Xmx384M" />
<arg value="-localWorkers" />
<arg value="${gwt.samples.localworkers}" />
<arg value="-war" />
<arg file="${sample.build}/war" />
<arg value="com.google.gwt.sample.${sample.lower}.${sample.upper}" />
</java>
</gwt.timer>
<length property="sample.size">
<fileset dir="${sample.build}/war/${sample.lower}" includes="*.cache.html,*.cache.js"/>
</length>
<echo message="output size for ${sample.upper} is ${sample.size} bytes"/>
</sequential>
</outofdate>
</target>
<macrodef name="webAppCreator">
<attribute name="platform" />
<attribute name="extension" default="" />
<sequential>
<outofdate>
<sourcefiles />
<targetfiles>
<pathelement location="${samples.scripts}/${sample.upper}/build.xml" />
</targetfiles>
<sequential>
<mkdir dir="${samples.scripts}/${sample.upper}" />
<java classname="com.google.gwt.user.tools.WebAppCreator" classpath="${gwt.user.jar}:${gwt.dev.jar}" failonerror="true">
<!-- Relative path is important! Paths will be relative in final distro -->
<sysproperty key="gwt.devjar" value="../../gwt-dev.jar" />
<arg value="-XnoEclipse" />
<arg value="-overwrite" />
<arg value="-out" />
<arg file="${samples.scripts}/${sample.upper}" />
<arg value="com.google.gwt.sample.${sample.lower}.${sample.upper}" />
</java>
</sequential>
</outofdate>
</sequential>
</macrodef>
<target name="scripts" description="Create launch scripts">
<webAppCreator platform="linux" />
<webAppCreator platform="windows" extension=".cmd" />
<webAppCreator platform="mac" />
</target>
<target name="build" depends="source, serverlibs, compile, gwtc, scripts" description="Build and package this project" />
<target name="checkstyle" description="Static analysis of source">
<gwt.checkstyle outputdirectory="${sample.build}">
<fileset dir="src" >
<!-- ValidationMessages is generated and has funny method names -->
<exclude name="main/java/com/google/gwt/sample/validation*/**/ValidationMessages.java" />
</fileset>
</gwt.checkstyle>
</target>
<target name="clean" description="Cleans this project's intermediate and output files">
<delete dir="${sample.build}" />
<delete includeemptydirs="true">
<fileset dir="${samples.scripts}">
<include name="*/${sample.upper}/**" />
</fileset>
</delete>
</target>
</project>