You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.xml 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="iciql" default="build" xmlns:mx="antlib:org.moxie">
  3. <!--
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. Retrieve Moxie Toolkit
  6. documentation @ http://gitblit.github.io/moxie
  7. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  8. -->
  9. <property name="moxie.version" value="0.9.2" />
  10. <property name="moxie.url" value="http://gitblit.github.io/moxie/maven" />
  11. <property name="moxie.jar" value="moxie-toolkit-${moxie.version}.jar" />
  12. <property name="moxie.dir" value="${user.home}/.moxie" />
  13. <!-- Download Moxie from it's Maven repository to user.home -->
  14. <mkdir dir="${moxie.dir}" />
  15. <get src="${moxie.url}/com/gitblit/moxie/moxie-toolkit/${moxie.version}/${moxie.jar}"
  16. dest="${moxie.dir}" skipexisting="true" verbose="true" />
  17. <!-- Register Moxie tasks -->
  18. <taskdef uri="antlib:org.moxie">
  19. <classpath location="${moxie.dir}/${moxie.jar}" />
  20. </taskdef>
  21. <!--
  22. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  23. Initialize Moxie and setup build properties
  24. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  25. -->
  26. <target name="prepare" description="Retrieves dependencies and sets up build properties">
  27. <mx:init mxroot="${moxie.dir}" />
  28. </target>
  29. <!--
  30. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  31. Clean
  32. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  33. -->
  34. <target name="clean" depends="prepare" description="Cleans build directory">
  35. <mx:clean />
  36. </target>
  37. <!--
  38. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  39. Compile
  40. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  41. -->
  42. <target name="compile" depends="prepare" description="Compiles iciql from source">
  43. <mx:javac />
  44. </target>
  45. <!--
  46. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  47. TestSuite
  48. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  49. -->
  50. <target name="testsuite" depends="compile" description="runs the benchmark test suite against all databases">
  51. <echo/>
  52. <echo>This will take a minute or two...</echo>
  53. <echo/>
  54. <mx:javac scope="test" />
  55. <mx:run scope="test" classname="com.iciql.test.IciqlSuite">
  56. <arg value="--dbFile" />
  57. <arg value="${project.outputDirectory}/performance_db.txt" />
  58. <arg value="--sqlFile" />
  59. <arg value="${project.outputDirectory}/performance_sql.txt" />
  60. </mx:run>
  61. </target>
  62. <!--
  63. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  64. Build
  65. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  66. -->
  67. <target name="build" depends="compile" description="Packages iciql for deployment">
  68. <!-- Package the jar, javadoc, sources, and zip distribution -->
  69. <mx:package />
  70. <!-- Deploy the artifacts into the version-controlled repository -->
  71. <mx:deploy basedir="${basedir}/maven" allowSnapshots="false" />
  72. </target>
  73. <!--
  74. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  75. Build the iciql website
  76. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  77. -->
  78. <target name="buildSite" description="Build the iciql website">
  79. <!-- ensure we have performance data -->
  80. <mx:if>
  81. <not>
  82. <available file="${project.outputDirectory}/performance_db.txt" />
  83. </not>
  84. <then>
  85. <fail message="Please run the &quot;testsuite&quot; target!"/>
  86. </then>
  87. </mx:if>
  88. <!-- Download links -->
  89. <property name="gc.url" value="http://gitblit.github.io/iciql/maven/com/iciql/${project.artifactId}/${project.releaseVersion}/" />
  90. <property name="releaselog" value="${basedir}/releases.moxie" />
  91. <mx:doc googleplusone="true" prettifyTheme="googlecode" minify="true"
  92. templateDir="${project.siteSourceDirectory}/templates"
  93. customless="custom.less" rssFeed="rss.xml" atomFeed="atom.xml">
  94. <logo file="iciql_white.png" />
  95. <favicon file="iciql-favicon.png" />
  96. <load token="%DBPERFORMANCE%" file="${project.outputDirectory}/performance_db.txt" />
  97. <regex searchPattern="\b(issue)(\s*[#]?|-){0,1}(\d+)\b"
  98. replacePattern="&lt;a href='${project.issuesUrl}/detail?id=$3'&gt;issue $3&lt;/a&gt;" />
  99. <structure>
  100. <menu name="about" pager="true" pagerPlacement="bottom" pagerLayout="justified">
  101. <page name="overview" src="index.mkd" out="index.html" />
  102. <page name="performance" src="performance.mkd" out="performance.html" />
  103. <page name="jaqu comparison" src="jaqu_comparison.mkd" out="jaqu_comparison.html" />
  104. </menu>
  105. <menu name="getting started" pager="true" pagerPlacement="bottom" pagerLayout="justified">
  106. <page name="table model classes" src="model_classes.mkd" out="model_classes.html" headerLinks="true" />
  107. <page name="data type adapters (DTA)" src="dta.mkd" out="dta.html" headerLinks="true" />
  108. <page name="data access object (DAO) usage" src="dao.mkd" out="dao.html" headerLinks="true" />
  109. <page name="database and table versioning" src="table_versioning.mkd" out="table_versioning.html" headerLinks="true" />
  110. <divider />
  111. <page name="SQL DSL usage" src="usage.mkd" out="usage.html" headerLinks="true" />
  112. <page name="SQL DSL examples" src="examples.mkd" out="examples.html" headerLinks="true" />
  113. <page name="tools" src="tools.mkd" out="tools.html" headerLinks="true" />
  114. </menu>
  115. <page name="building" src="building.mkd" out="building.html" />
  116. <page name="release notes" out="releasenotes.html">
  117. <template src="releasecurrent.ftl" data="${releaselog}" />
  118. </page>
  119. <page out="releases.html" navbarlink="false">
  120. <template src="releasehistory.ftl" data="${releaselog}" />
  121. </page>
  122. <menu name="downloads">
  123. <link name="Maven Central (2.0.0+)"
  124. src="http://search.maven.org/#search|ga|1|com.gitblit.iciql" />
  125. <divider />
  126. <link name="Iciql Maven Repository (pre-2.0.0)" src="${project.mavenUrl}" />
  127. </menu>
  128. <menu name="links">
  129. <link name="Github" src="${project.scmUrl}" />
  130. <link name="Issues" src="${project.issuesUrl}" />
  131. </menu>
  132. <divider />
  133. </structure>
  134. <!-- Generate RSS and Atom feeds from the release history -->
  135. <page as="atom.xml">
  136. <template src="atom.ftl" data="${releaselog}" />
  137. </page>
  138. <page as="rss.xml">
  139. <template src="rss.ftl" data="${releaselog}" />
  140. </page>
  141. </mx:doc>
  142. <!-- Copy standard javadoc -->
  143. <mkdir dir="${project.siteTargetDirectory}/javadoc" />
  144. <copy todir="${project.siteTargetDirectory}/javadoc">
  145. <fileset dir="${project.javadocTargetDirectory}" />
  146. </copy>
  147. </target>
  148. <!--
  149. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  150. Copy the built site to the gh-pages branch
  151. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  152. -->
  153. <target name="updateGhpages" depends="buildSite">
  154. <mx:ghpages obliterate="false" />
  155. </target>
  156. <!--
  157. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  158. Publish site to hosting service
  159. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  160. -->
  161. <target name="publishSite" depends="updateGhpages" description="Publish the iciql site to a webserver" >
  162. <echo>Uploading ${project.artifactId} ${project.version} website</echo>
  163. <mx:ftp server="${ftp.server}"
  164. userid="${ftp.user}"
  165. password="${ftp.password}"
  166. remotedir="${ftp.site.dir}"
  167. passive="true"
  168. verbose="yes">
  169. <fileset dir="${project.siteTargetDirectory}" />
  170. </mx:ftp>
  171. </target>
  172. <!--
  173. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  174. Tag a new version and prepare for the next development cycle.
  175. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  176. -->
  177. <target name="tagRelease" depends="prepare" description="Tags a release">
  178. <!-- release -->
  179. <property name="dryrun" value="false" />
  180. <mx:version stage="release" dryrun="${dryrun}" />
  181. <property name="project.tag" value="v${project.version}" />
  182. <!-- commit build.moxie & releases.moxie (automatic) -->
  183. <mx:commit showtitle="no">
  184. <message>Prepare ${project.version} release</message>
  185. <tag name="${project.tag}">
  186. <message>${project.name} ${project.version} release</message>
  187. </tag>
  188. </mx:commit>
  189. <!-- create the release process script -->
  190. <mx:if>
  191. <os family="windows" />
  192. <then>
  193. <!-- Windows PowerShell script -->
  194. <!-- set-executionpolicy remotesigned -->
  195. <property name="recipe" value="release_${project.version}.ps1" />
  196. </then>
  197. <else>
  198. <!-- Bash script -->
  199. <property name="recipe" value="release_${project.version}.sh" />
  200. </else>
  201. </mx:if>
  202. <delete file="${recipe}" failonerror="false" quiet="true" verbose="false" />
  203. <!-- Work-around for lack of proper ant property substitution in copy -->
  204. <property name="dollar" value="$"/>
  205. <copy file="release.template" tofile="${recipe}">
  206. <filterset begintoken="${dollar}{" endtoken="}">
  207. <filter token="project.version" value="${project.version}" />
  208. <filter token="project.commitId" value="${project.commitId}" />
  209. <filter token="project.tag" value="${project.tag}" />
  210. </filterset>
  211. </copy>
  212. <chmod file="${recipe}" perm="ugo+rx" />
  213. <!-- next cycle -->
  214. <mx:version stage="snapshot" incrementNumber="minor" dryrun="${dryrun}" />
  215. <mx:commit showtitle="no">
  216. <message>Reset build identifiers for next development cycle</message>
  217. </mx:commit>
  218. </target>
  219. </project>