Revision created by MOE tool push_codebase.
[gae.git] / java / build.xml
blobe1e7f18d70f29c3b467715f62f185c6f72efaba2
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"/>
14   <path id="main.path">
15     <pathelement path="${build.dir}/classes/main"/>
16     <fileset dir="${build.dir}/appengine-java-sdk/lib/user">
17       <include name="**.jar"/>
18     </fileset>
19     <fileset dir="${build.dir}/appengine-java-sdk/lib/opt">
20       <include name="**.jar"/>
21     </fileset>
22     <fileset dir="${generated.dir}">
23       <include name="jsr107cache-1.1.jar"/>
24     </fileset>
25   </path>
27   <path id="test.path">
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"/>
33     </fileset>
34   </path>
36   <target name="init">
37   </target>
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"/>
43   </target>
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"/>
55       </fileset>
56     </copy>
57     <javac srcdir="${build.dir}/jsr107cache" destdir="${build.dir}/classes/main">
58       <classpath>
59         <path refid="main.path"/>
60       </classpath>
61     </javac>
62   </target>
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">
69       <classpath>
70         <path refid="test.path"/>
71       </classpath>
72     </javac>
74     <junit haltonfailure="yes">
75       <formatter type="brief" usefile="false"/>
76       <classpath>
77         <path refid="test.path"/>
78       </classpath>
80       <batchtest fork="yes">
81         <fileset dir="${build.dir}/classes/test">
82           <include name="**/*Test.class"/>
83         </fileset>
84       </batchtest>
85     </junit>
86     -->
87   </target>
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/**"/>
93       </fileset>
94       <manifest>
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}"/>
101         </section>
102       </manifest>
103       <service type="net.sf.jsr107cache.CacheFactory"
104                provider="com.google.appengine.api.memcache.jsr107cache.GCacheFactory"/>
105     </jar>
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"/>
110   </target>
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"/>
116     </ant>
117     <copy todir="${build.dir}/appengine-java-sdk/demos">
118       <fileset dir="${root.dir}/demos"/>
119     </copy>
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"/>
122   </target>
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"/>
128     </ant>
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"/>
132     </ant>
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"/>
136     </ant>
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"/>
140     </ant>
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"/>
144     </ant>
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"/>
148     </ant>
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"/>
152     </ant>
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"/>
156     </ant>
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"/>
162     </ant>
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"/>
166     </ant>
168   </target>
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"/>
174     </copy>
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"/>
195        </tarfileset>
196        <tarfileset dir="${dist.dir}" filemode="755">
197          <include name="appengine-java-sdk-${version}/**/*.sh"/>
198        </tarfileset>
199     </tar>
201     <zip destfile="${dist.dir}/appengine-java-sdk-${version}.zip">
202        <tarfileset src="${dist.dir}/appengine-java-sdk-${version}.tar"/>
203     </zip>
204   </target>
206   <target name="clean"
207           description="Force a clean build">
208     <delete dir="${build.dir}"/>
209   </target>
210 </project>