1 <project name="appengine_java_sdk" default="dist">
3 <property name="root.dir" location="."/>
5 <property name="src.dir" location="${root.dir}/src"/>
6 <property name="generated.dir" location="${src.dir}/generated"/>
8 <property name="build.dir" location="${root.dir}/build"/>
9 <property name="dist.dir" location="${build.dir}/dist"/>
11 <property name="api.version" value="1.0"/>
12 <property name="version" value="SNAPSHOT"/>
15 <pathelement path="${build.dir}/classes/main"/>
16 <fileset dir="${build.dir}/appengine-java-sdk/lib/user">
17 <include name="**.jar"/>
19 <fileset dir="${build.dir}/appengine-java-sdk/lib/opt">
20 <include name="**.jar"/>
22 <fileset dir="${generated.dir}">
23 <include name="jsr107cache-1.1.jar"/>
28 <path refid="main.path"/>
29 <pathelement path="${build.dir}/classes/test"/>
30 <fileset dir="${generated.dir}">
31 <include name="junit.jar"/>
32 <include name="easymock.jar"/>
39 <target name="unpack-generated" depends="init">
40 <unzip src="${generated.dir}/appengine-java-sdk.zip" dest="${build.dir}"/>
41 <unzip src="${generated.dir}/appengine-orm.zip" dest="${build.dir}/appengine-java-sdk"/>
42 <unzip src="${generated.dir}/datanucleus-appengine-dist.zip" dest="${build.dir}/appengine-java-sdk"/>
45 <target name="compile" depends="unpack-generated">
46 <mkdir dir="${build.dir}/classes/main"/>
48 <!-- Copy the subset of source we want to compile because javac tries -->
49 <!-- to recompile classes in the srcdir since it thinks they are -->
50 <!-- out-of-date with respect to the compiled code. -->
51 <mkdir dir="${build.dir}/jsr107cache"/>
52 <copy todir="${build.dir}/jsr107cache">
53 <fileset dir="${src.dir}/main">
54 <include name="com/google/appengine/api/memcache/jsr107cache/*.java"/>
57 <javac srcdir="${build.dir}/jsr107cache" destdir="${build.dir}/classes/main">
59 <path refid="main.path"/>
64 <target name="test" depends="compile">
65 <!-- Commented out until we have at least one unit test that runs here.
66 <mkdir dir="${build.dir}/classes/test"/>
68 <javac srcdir="${src.dir}/test" destdir="${build.dir}/classes/test">
70 <path refid="test.path"/>
74 <junit haltonfailure="yes">
75 <formatter type="brief" usefile="false"/>
77 <path refid="test.path"/>
80 <batchtest fork="yes">
81 <fileset dir="${build.dir}/classes/test">
82 <include name="**/*Test.class"/>
89 <target name="create-jars" depends="compile">
90 <jar destfile="${build.dir}/appengine-java-sdk/lib/user/appengine-jsr107cache.jar">
91 <fileset dir="${build.dir}/classes/main">
92 <include name="com/google/appengine/api/memcache/jsr107cache/**"/>
95 <section name="com/google/appengine/api/memcache/jsr107cache/">
96 <attribute name="Specification-Vendor" value="Google"/>
97 <attribute name="Specification-Version" value="${api.version}"/>
98 <attribute name="Implementation-Vendor-Id" value="com.google"/>
99 <attribute name="Implementation-Vendor" value="Google"/>
100 <attribute name="Implementation-Version" value="${timestamp}"/>
103 <service type="net.sf.jsr107cache.CacheFactory"
104 provider="com.google.appengine.api.memcache.jsr107cache.GCacheFactory"/>
107 <!-- copy the jsr107 jar from its legacy location to its new location -->
108 <copy file="${build.dir}/appengine-java-sdk/lib/user/appengine-jsr107cache.jar"
109 tofile="${build.dir}/appengine-java-sdk/lib/opt/user/jsr107/v1/appengine-jsr107cache.jar"/>
112 <target name="build-sdk" depends="create-jars">
113 <ant antfile="${root.dir}/demos/guestbook/build.xml"
114 dir="${root.dir}/demos/guestbook">
115 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
117 <copy todir="${build.dir}/appengine-java-sdk/demos">
118 <fileset dir="${root.dir}/demos"/>
120 <!-- Ant 1.7 strips file permissions when extracting zips, so add the execute bit back in. -->
121 <chmod dir="${build.dir}/appengine-java-sdk/bin" perm="ugo+rx" includes="**/*.sh"/>
124 <target name="build-demos" depends="build-sdk">
125 <ant antfile="${root.dir}/demos/guestbook/build.xml"
126 dir="${root.dir}/demos/guestbook">
127 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
129 <ant antfile="${root.dir}/demos/helloxmpp/build.xml"
130 dir="${root.dir}/demos/helloxmpp">
131 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
133 <ant antfile="${root.dir}/demos/jdoexamples/build.xml"
134 dir="${root.dir}/demos/jdoexamples">
135 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
137 <ant antfile="${root.dir}/demos/mandelbrot/build.xml"
138 dir="${root.dir}/demos/mandelbrot">
139 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
141 <ant antfile="${root.dir}/demos/new_project_template/build.xml"
142 dir="${root.dir}/demos/new_project_template">
143 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
145 <ant antfile="${root.dir}/demos/helloservers/build.xml"
146 dir="${root.dir}/demos/helloservers">
147 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
149 <ant antfile="${root.dir}/demos/shardedcounter/build.xml"
150 dir="${root.dir}/demos/shardedcounter">
151 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
153 <ant antfile="${root.dir}/demos/taskqueueexamples/build.xml"
154 dir="${root.dir}/demos/taskqueueexamples">
155 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
158 <!-- These demos require a GWT installation:
159 <ant antfile="${root.dir}/demos/sticky/build.xml"
160 dir="${root.dir}/demos/sticky">
161 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
163 <ant antfile="${root.dir}/demos/taskengine/build.xml"
164 dir="${root.dir}/demos/taskengine">
165 <property name="appengine.sdk" location="${build.dir}/appengine-java-sdk"/>
170 <target name="dist" depends="build-sdk">
171 <mkdir dir="${dist.dir}"/>
172 <copy todir="${dist.dir}/appengine-java-sdk-${version}">
173 <fileset dir="${build.dir}/appengine-java-sdk"/>
175 <move file="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-api.jar"
176 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-api-${api.version}-sdk-${version}.jar"/>
177 <move file="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-api-labs.jar"
178 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-api-labs-${version}.jar"/>
179 <move file="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-jsr107cache.jar"
180 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/user/appengine-jsr107cache-${version}.jar"/>
181 <move file="${dist.dir}/appengine-java-sdk-${version}/lib/opt/user/jsr107/v1/appengine-jsr107cache.jar"
182 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/opt/user/jsr107/v1/appengine-jsr107cache-${version}.jar"/>
183 <copy file="${generated.dir}/jsr107cache-1.1.jar"
184 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/user/jsr107cache-1.1.jar"/>
185 <copy file="${generated.dir}/jsr107cache-1.1.jar"
186 tofile="${dist.dir}/appengine-java-sdk-${version}/lib/opt/user/jsr107/v1/jsr107cache-1.1.jar"/>
187 <copy file="${src.dir}/appengine-api-src.zip"
188 tofile="${dist.dir}/appengine-java-sdk-${version}/src/user/appengine-api-${api.version}-sdk-${version}-src.zip"/>
190 <!-- Ant 1.7 does not preserve file permissions when creating zips, so we first create a tar. -->
191 <tar destfile="${dist.dir}/appengine-java-sdk-${version}.tar">
192 <tarfileset dir="${dist.dir}">
193 <include name="appengine-java-sdk-${version}/**"/>
194 <exclude name="**/*.sh"/>
196 <tarfileset dir="${dist.dir}" filemode="755">
197 <include name="appengine-java-sdk-${version}/**/*.sh"/>
201 <zip destfile="${dist.dir}/appengine-java-sdk-${version}.zip">
202 <tarfileset src="${dist.dir}/appengine-java-sdk-${version}.tar"/>
207 description="Force a clean build">
208 <delete dir="${build.dir}"/>