/dist/build.xml

http://datanucleus-appengine.googlecode.com/ · XML · 230 lines · 173 code · 23 blank · 34 comment · 0 complexity · 03c79a339cdbccd9936c1b8a02625667 MD5 · raw file

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <project name="gae" default="testdist">
  3. <property name="version.major" value="2"/>
  4. <property name="version.minor" value="1"/>
  5. <property name="version.point" value="2"/>
  6. <property name="version.rc" value="-SNAPSHOT"/>
  7. <property name="version" value="${version.major}.${version.minor}.${version.point}${version.rc}"/>
  8. <property name="zip.prefix" value="datanucleus-appengine"/>
  9. <property name="dist.target" value="../target/${zip.prefix}-${version}-dist.zip"/>
  10. <property name="orm.lib.dir" value="../lib"/>
  11. <property name="orm.tmpdist.dir" value="/tmp/testdist"/>
  12. <property name="orm.sdk.tmpdist.dir" value="${orm.tmpdist.dir}"/>
  13. <property name="orm.sdk.tmpdist.lib.dir" value="${orm.sdk.tmpdist.dir}/lib"/>
  14. <target name="dist" description="Build the datanucleus appengine distribution">
  15. <exec executable="mvn" failifexecutionfails="true" failonerror="true" dir="..">
  16. <arg value="clean"/>
  17. <arg value="package"/>
  18. </exec>
  19. </target>
  20. <target name="testdist" depends="dist"
  21. description="Unzip the dist, launch one of the sample apps, and hit it
  22. with curl to make sure it is functioning properly.">
  23. <!--
  24. Setup a directory for the test distribution
  25. It should look like this:
  26. /tmp/testdist/lib
  27. /tmp/testdist/lib/appengine-tools-api.jar
  28. /tmp/testdist/lib/impl/appengine-local-runtime.jar
  29. /tmp/testdist/lib/impl/appengine-api.jar
  30. /tmp/testdist/lib/impl/appengine-api-stubs.jar
  31. /tmp/testdist/lib/shared/geronimo-servlet_2.5_spec-1.2.jar
  32. /tmp/testdist/lib/shared/geronimo-jsp_2.1_spec-1.0.1.jar
  33. /tmp/testdist/lib/shared/geronimo-el_1.0_spec-1.0.1.jar
  34. /tmp/testdist/lib/shared/appengine-local-runtime-shared.jar
  35. /tmp/testdist/lib/shared/jsp/jasper-compiler-5.0.28.jar
  36. /tmp/testdist/lib/shared/jsp/jasper-runtime-5.0.28.jar
  37. /tmp/testdist/lib/shared/jsp/commons-logging-1.1.1.jar
  38. /tmp/testdist/lib/tools/jsp
  39. /tmp/testdist/lib/agent
  40. /tmp/testdist/lib/agent/appengine-agent.jar
  41. /tmp/testdist/lib/agent/appengine-agentimpl.jar
  42. /tmp/testdist/lib/impl/agent
  43. /tmp/testdist/lib/impl/agent/appengine-agentruntime.jar
  44. /tmp/testdist/lib/user/appengine-api.jar
  45. /tmp/testdist/lib/opt/tools/appengine-local-endpoints/v1/appengine-local-endpoints.jar
  46. /tmp/testdist/lib/opt/user/appengine-local-endpoints/v1/appengine-local-endpoints.jar
  47. /tmp/testdist/lib/override/appengine-dev-jdk-overrides.jar
  48. /tmp/testdist/config/user/ant-macros.xml
  49. -->
  50. <delete dir="${orm.tmpdist.dir}"/>
  51. <mkdir dir="${orm.tmpdist.dir}"/>
  52. <!-- Now setup a directory that contains the sdk jars we need to run the demos -->
  53. <mkdir dir="${orm.sdk.tmpdist.lib.dir}"/>
  54. <copy todir="${orm.sdk.tmpdist.lib.dir}">
  55. <fileset dir="${orm.lib.dir}">
  56. <include name="appengine-tools-api.jar"/>
  57. </fileset>
  58. </copy>
  59. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/impl"/>
  60. <copy todir="${orm.sdk.tmpdist.lib.dir}/impl">
  61. <fileset dir="${orm.lib.dir}">
  62. <include name="appengine-local-runtime.jar"/>
  63. <include name="appengine-api-stubs.jar"/>
  64. <include name="appengine-api.jar"/>
  65. </fileset>
  66. </copy>
  67. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/shared"/>
  68. <copy todir="${orm.sdk.tmpdist.lib.dir}/shared">
  69. <fileset dir="${orm.lib.dir}">
  70. <include name="appengine-local-runtime-shared.jar"/>
  71. <include name="geronimo-servlet*.jar"/>
  72. <include name="geronimo-jsp*.jar"/>
  73. <include name="geronimo-el*.jar"/>
  74. </fileset>
  75. </copy>
  76. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/shared/jsp"/>
  77. <copy todir="${orm.sdk.tmpdist.lib.dir}/shared/jsp">
  78. <fileset dir="${orm.lib.dir}">
  79. <include name="repackaged-appengine-jasper-compiler-5.0.28.jar"/>
  80. <include name="repackaged-appengine-jasper-runtime-5.0.28.jar"/>
  81. <include name="repackaged-appengine-commons-logging-1.1.1.jar"/>
  82. </fileset>
  83. </copy>
  84. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/agent"/>
  85. <copy todir="${orm.sdk.tmpdist.lib.dir}/agent">
  86. <fileset dir="${orm.lib.dir}">
  87. <include name="appengine-agent.jar"/>
  88. <include name="appengine-agentimpl.jar"/>
  89. </fileset>
  90. </copy>
  91. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/impl/agent"/>
  92. <copy todir="${orm.sdk.tmpdist.lib.dir}/impl/agent">
  93. <fileset dir="${orm.lib.dir}">
  94. <include name="appengine-agentruntime.jar"/>
  95. </fileset>
  96. </copy>
  97. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/user"/>
  98. <copy todir="${orm.sdk.tmpdist.lib.dir}/user">
  99. <fileset dir="${orm.lib.dir}">
  100. <include name="appengine-api-1.0-sdk*.jar"/>
  101. </fileset>
  102. </copy>
  103. <!-- directory just needs to exist -->
  104. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/tools/jsp"/>
  105. <mkdir dir="${orm.sdk.tmpdist.dir}/config/user"/>
  106. <copy todir="${orm.sdk.tmpdist.dir}/config/user">
  107. <fileset dir=".">
  108. <include name="ant-macros.xml"/>
  109. </fileset>
  110. </copy>
  111. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/opt/tools/appengine-local-endpoints/v1"/>
  112. <copy todir="${orm.sdk.tmpdist.lib.dir}/opt/tools/appengine-local-endpoints/v1">
  113. <fileset dir="${orm.lib.dir}">
  114. <include name="appengine-local-endpoints.jar"/>
  115. </fileset>
  116. </copy>
  117. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/opt/user/appengine-local-endpoints/v1"/>
  118. <copy todir="${orm.sdk.tmpdist.lib.dir}/opt/user/appengine-local-endpoints/v1">
  119. <fileset dir="${orm.lib.dir}">
  120. <include name="appengine-local-endpoints.jar"/>
  121. </fileset>
  122. </copy>
  123. <mkdir dir="${orm.sdk.tmpdist.dir}/config/sdk"/>
  124. <copy todir="${orm.sdk.tmpdist.dir}/config/sdk">
  125. <fileset dir=".">
  126. <include name="logging.properties"/>
  127. </fileset>
  128. </copy>
  129. <mkdir dir="${orm.sdk.tmpdist.lib.dir}/override"/>
  130. <copy todir="${orm.sdk.tmpdist.lib.dir}/override">
  131. <fileset dir="${orm.lib.dir}">
  132. <include name="appengine-dev-jdk-overrides.jar"/>
  133. </fileset>
  134. </copy>
  135. <unzip src="${dist.target}" dest="${orm.tmpdist.dir}"/>
  136. <property name="sdk.dir" value="${orm.sdk.tmpdist.lib.dir}/.."/>
  137. <parallel>
  138. <daemons>
  139. <ant antfile="${orm.tmpdist.dir}/demos/helloorm2/build.xml" target="runserver"
  140. dir="${orm.tmpdist.dir}/demos/helloorm2/"/>
  141. </daemons>
  142. <sequential>
  143. <sleep seconds="10"/>
  144. <!-- create a flight -->
  145. <exec executable="curl" failifexecutionfails="true" failonerror="true">
  146. <arg value="-d"/>
  147. <arg value="orig=BOS&amp;dest=LAX"/>
  148. <arg value="http://localhost:8080/addFlight"/>
  149. </exec>
  150. <exec executable="curl" failifexecutionfails="true" failonerror="true" outputproperty="curl.add.result">
  151. <arg value="http://localhost:8080"/>
  152. </exec>
  153. <condition property="expected.add.response">
  154. <contains string="${curl.add.result}" substring="getFlight?key=1"/>
  155. </condition>
  156. <fail unless="expected.add.response" message="Did not get the expected add response: ${curl.add.result}${line.separator}${line.separator} BUILD FAILED!!!!"/>
  157. <!-- issue a jpql query -->
  158. <exec executable="curl" failifexecutionfails="true" failonerror="true" outputproperty="curl.query.result">
  159. <arg value="-d"/>
  160. <arg value="q=SELECT f FROM com.google.appengine.demos.helloorm.Flight AS f where orig = 'BOS'"/>
  161. <arg value="http://localhost:8080"/>
  162. </exec>
  163. <condition property="expected.query.response">
  164. <contains string="${curl.query.result}" substring="getFlight?key=1"/>
  165. </condition>
  166. <fail unless="expected.query.response" message="Did not get the expected query response: ${curl.query.result}${line.separator}${line.separator} BUILD FAILED!!!!"/>
  167. <!-- switch to jdo -->
  168. <exec executable="curl" failifexecutionfails="true" failonerror="true">
  169. <arg value="-d"/>
  170. <arg value="persistenceStandard=JDO"/>
  171. <arg value="http://localhost:8080/updatePersistenceStandard"/>
  172. </exec>
  173. <exec executable="curl" failifexecutionfails="true" failonerror="true" outputproperty="curl.switchps.result">
  174. <arg value="http://localhost:8080"/>
  175. </exec>
  176. <condition property="expected.switchps.response">
  177. <contains string="${curl.switchps.result}" substring="Persistence standard is JDO"/>
  178. </condition>
  179. <fail unless="expected.switchps.response" message="Did not get the expected switchps response: ${curl.switchps.result}${line.separator}${line.separator} BUILD FAILED!!!!"/>
  180. </sequential>
  181. </parallel>
  182. </target>
  183. <!-- Default value. Properties can't change once set so if user overrides on the command
  184. line this gets ignored. This is what we want. -->
  185. <property name="appengine.sdk.path" value="../../appengine-java-sdk"/>
  186. <property name="appengine.sdk.lib.path" value="${appengine.sdk.path}/lib"/>
  187. <property name="appengine.sdk.config.path" value="${appengine.sdk.path}/config"/>
  188. <target name="updatesdkjars"
  189. description="Pull in new sdk jars. Assumes sdk is located at ../../appengine-java-sdk. Pass -Dappengine.sdk.path=/path/to/sdk to override.">
  190. <available file="${appengine.sdk.lib.path}" property="libDirExists"/>
  191. <fail unless="libDirExists" message="${appengine.sdk.lib.path} does not exist. Pass -Dappengine.sdk.path=/path/to/sdk to override the default sdk location."/>
  192. <copy todir="../lib" verbose="true" overwrite="true">
  193. <fileset dir="${appengine.sdk.lib.path}" includes="appengine-tools-api.jar"/>
  194. <fileset dir="${appengine.sdk.lib.path}/user" includes = "appengine-api-1.0-sdk*.jar"/>
  195. <fileset dir="${appengine.sdk.lib.path}/impl" includes = "*.jar"/>
  196. <fileset dir="${appengine.sdk.lib.path}/impl/agent" includes = "*.jar"/>
  197. <fileset dir="${appengine.sdk.lib.path}/shared" includes = "appengine*.jar"/>
  198. <fileset dir="${appengine.sdk.lib.path}/agent" includes = "*.jar"/>
  199. <fileset dir="${appengine.sdk.lib.path}/testing" includes = "*.jar"/>
  200. <fileset dir="${appengine.sdk.lib.path}/opt/tools/appengine-local-endpoints/v1" includes = "*.jar"/>
  201. <fileset dir="${appengine.sdk.lib.path}/override" includes = "*.jar"/>
  202. </copy>
  203. <copy todir="." verbose="true" overwrite="true">
  204. <fileset dir="${appengine.sdk.config.path}/user" includes="ant-macros.xml"/>
  205. </copy>
  206. </target>
  207. </project>