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 17KB

13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="gitblit" default="compile" basedir=".">
  3. <!-- Google Code upload task -->
  4. <taskdef classname="net.bluecow.googlecode.ant.GoogleCodeUploadTask" classpath="${basedir}/tools/ant-googlecode-0.0.3.jar" name="gcupload"/>
  5. <!-- Project Properties -->
  6. <property name="project.jar" value="gitblit.jar" />
  7. <property name="project.mainclass" value="com.gitblit.Launcher" />
  8. <property name="project.build.dir" value="${basedir}/build" />
  9. <property name="project.deploy.dir" value="${basedir}/deploy" />
  10. <property name="project.war.dir" value="${basedir}/war" />
  11. <property name="project.site.dir" value="${basedir}/site" />
  12. <property name="project.resources.dir" value="${basedir}/resources" />
  13. <!-- Load publication servers, paths, and credentials -->
  14. <loadproperties srcfile="${basedir}/build.properties" />
  15. <!--
  16. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  17. Scrape the version info from code and setup the build properties
  18. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19. -->
  20. <target name="buildinfo">
  21. <!-- build date -->
  22. <tstamp>
  23. <format property="gb.buildDate" pattern="yyyy-MM-dd" />
  24. </tstamp>
  25. <!-- extract Gitblit version number from source code -->
  26. <loadfile property="gb.version" srcfile="${basedir}/src/com/gitblit/Constants.java">
  27. <filterchain>
  28. <linecontains>
  29. <contains value="public static final String VERSION = " />
  30. </linecontains>
  31. <striplinebreaks />
  32. <tokenfilter>
  33. <replacestring from="public static final String VERSION = &quot;" to="" />
  34. <replacestring from="&quot;;" to="" />
  35. <trim />
  36. </tokenfilter>
  37. </filterchain>
  38. </loadfile>
  39. <!-- extract JGit version number from source code -->
  40. <loadfile property="jgit.version" srcfile="${basedir}/src/com/gitblit/Constants.java">
  41. <filterchain>
  42. <linecontains>
  43. <contains value="public static final String JGIT_VERSION = " />
  44. </linecontains>
  45. <striplinebreaks />
  46. <tokenfilter>
  47. <replacestring from="public static final String JGIT_VERSION = &quot;" to="" />
  48. <replacestring from="&quot;;" to="" />
  49. <trim />
  50. </tokenfilter>
  51. </filterchain>
  52. </loadfile>
  53. <property name="distribution.zipfile" value="gitblit-${gb.version}.zip" />
  54. <property name="distribution.warfile" value="gitblit-${gb.version}.war" />
  55. </target>
  56. <!--
  57. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  58. Compile
  59. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  60. -->
  61. <target name="compile" depends="buildinfo" description="Retrieves dependencies and compiles Gitblit from source">
  62. <!-- copy required distribution files to project folder -->
  63. <copy todir="${basedir}" overwrite="false">
  64. <fileset dir="${basedir}/distrib">
  65. <include name="gitblit.properties" />
  66. <include name="users.properties" />
  67. </fileset>
  68. </copy>
  69. <!-- Compile the build tool and execute it.
  70. This downloads missing compile-time dependencies from Maven. -->
  71. <delete dir="${project.build.dir}" />
  72. <mkdir dir="${project.build.dir}" />
  73. <javac srcdir="${basedir}/src" destdir="${project.build.dir}">
  74. <include name="com/gitblit/build/Build.java" />
  75. <include name="com/gitblit/Constants.java" />
  76. <include name="com/gitblit/utils/StringUtils.java" />
  77. </javac>
  78. <java classpath="${project.build.dir}" classname="com.gitblit.build.Build" />
  79. <!-- Compile Project -->
  80. <path id="master-classpath">
  81. <fileset dir="${basedir}/ext">
  82. <include name="*.jar" />
  83. </fileset>
  84. </path>
  85. <javac destdir="${project.build.dir}" failonerror="false">
  86. <src path="${basedir}/src" />
  87. <classpath refid="master-classpath" />
  88. </javac>
  89. <copy todir="${project.build.dir}">
  90. <fileset dir="${basedir}/src" excludes="**/*.java,**/thumbs.db" />
  91. </copy>
  92. </target>
  93. <!--
  94. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  95. Build Gitblit GO
  96. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  97. -->
  98. <target name="buildGO" depends="compile" description="Build Gitblit GO distribution">
  99. <echo>Building Gitblit GO ${gb.version}</echo>
  100. <!-- Delete the deploy folder -->
  101. <delete dir="${project.deploy.dir}" />
  102. <!-- Create deployment folder structure -->
  103. <mkdir dir="${project.deploy.dir}" />
  104. <copy todir="${project.deploy.dir}">
  105. <fileset dir="${basedir}/distrib">
  106. <include name="**/*" />
  107. </fileset>
  108. </copy>
  109. <!-- Build jar -->
  110. <jar jarfile="${project.deploy.dir}/${project.jar}">
  111. <fileset dir="${project.build.dir}">
  112. <include name="**/*" />
  113. </fileset>
  114. <fileset dir="${project.resources.dir}">
  115. <exclude name="thumbs.db" />
  116. </fileset>
  117. <manifest>
  118. <attribute name="Main-Class" value="${project.mainclass}" />
  119. </manifest>
  120. </jar>
  121. <!-- Build the docs for the deploy -->
  122. <antcall target="buildDocs" inheritall="true" inheritrefs="true">
  123. <param name="docs.output.dir" value="${project.deploy.dir}/docs" />
  124. </antcall>
  125. <!-- Create Zip deployment -->
  126. <zip destfile="${distribution.zipfile}">
  127. <fileset dir="${project.deploy.dir}">
  128. <include name="**/*" />
  129. </fileset>
  130. </zip>
  131. </target>
  132. <!--
  133. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  134. Build Gitblit Docs which are bundled with GO and WAR downloads
  135. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  136. -->
  137. <target name="buildDocs">
  138. <!-- Build Docs -->
  139. <mkdir dir="${docs.output.dir}" />
  140. <copy todir="${docs.output.dir}">
  141. <!-- Copy selected Gitblit resources -->
  142. <fileset dir="${project.resources.dir}">
  143. <include name="background.png" />
  144. <include name="gitblit.css" />
  145. <include name="markdown.css" />
  146. <include name="gitblt_25.png" />
  147. <include name="gitblt-favicon.png" />
  148. <include name="lock_go_16x16.png" />
  149. <include name="lock_pull_16x16.png" />
  150. <include name="shield_16x16.png" />
  151. <include name="cold_16x16.png" />
  152. <include name="bug_16x16.png" />
  153. <include name="book_16x16.png" />
  154. <include name="blank.png" />
  155. </fileset>
  156. <!-- Copy Doc images -->
  157. <fileset dir="${basedir}/docs">
  158. <include name="*.png" />
  159. </fileset>
  160. </copy>
  161. <!-- Copy google-code-prettify -->
  162. <mkdir dir="${docs.output.dir}/prettify" />
  163. <copy todir="${docs.output.dir}/prettify">
  164. <fileset dir="${basedir}/src/com/gitblit/wicket/pages/prettify">
  165. <exclude name="thumbs.db" />
  166. </fileset>
  167. </copy>
  168. <!-- Build deployment doc pages -->
  169. <java classpath="${project.build.dir}" classname="com.gitblit.build.BuildSite">
  170. <classpath refid="master-classpath" />
  171. <arg value="--sourceFolder" />
  172. <arg value="${basedir}/docs" />
  173. <arg value="--outputFolder" />
  174. <arg value="${docs.output.dir}" />
  175. <arg value="--pageHeader" />
  176. <arg value="${basedir}/docs/doc_header.html" />
  177. <arg value="--pageFooter" />
  178. <arg value="${basedir}/docs/doc_footer.html" />
  179. <arg value="--skip" />
  180. <arg value="screenshots" />
  181. <arg value="--skip" />
  182. <arg value="releases" />
  183. <arg value="--alias" />
  184. <arg value="index=overview" />
  185. <arg value="--alias" />
  186. <arg value="properties=gitblit.properties" />
  187. <arg value="--substitute" />
  188. <arg value="%VERSION%=${gb.version}" />
  189. <arg value="--substitute" />
  190. <arg value="%GO%=${distribution.zipfile}" />
  191. <arg value="--substitute" />
  192. <arg value="%WAR%=${distribution.warfile}" />
  193. <arg value="--substitute" />
  194. <arg value="%BUILDDATE%=${gb.buildDate}" />
  195. <arg value="--substitute" />
  196. <arg value="%JGIT%=${jgit.version}" />
  197. <arg value="--load" />
  198. <arg value="%PROPERTIES%=${basedir}/distrib/gitblit.properties" />
  199. </java>
  200. </target>
  201. <!--
  202. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  203. Build Gitblit WAR
  204. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  205. -->
  206. <target name="buildWAR" depends="compile" description="Build Gitblit WAR">
  207. <echo>Building Gitblit WAR ${gb.version}</echo>
  208. <delete dir="${project.war.dir}" />
  209. <!-- Copy web.xml and users.properties to WEB-INF -->
  210. <copy todir="${project.war.dir}/WEB-INF">
  211. <fileset dir="${basedir}/distrib">
  212. <include name="users.properties" />
  213. </fileset>
  214. <fileset dir="${basedir}/src/WEB-INF">
  215. <include name="web.xml" />
  216. </fileset>
  217. </copy>
  218. <!-- Build the docs for the WAR build -->
  219. <antcall target="buildDocs" inheritall="true" inheritrefs="true">
  220. <param name="docs.output.dir" value="${project.war.dir}/WEB-INF/docs" />
  221. </antcall>
  222. <!-- Build the WAR web.xml from the prototype web.xml and gitblit.properties -->
  223. <java classpath="${project.build.dir}" classname="com.gitblit.build.BuildWebXml">
  224. <classpath refid="master-classpath" />
  225. <arg value="--sourceFile" />
  226. <arg value="${basedir}/src/WEB-INF/web.xml" />
  227. <arg value="--destinationFile" />
  228. <arg value="${project.war.dir}/WEB-INF/web.xml" />
  229. <arg value="--propertiesFile" />
  230. <arg value="${basedir}/distrib/gitblit.properties" />
  231. </java>
  232. <!-- Gitblit resources -->
  233. <copy todir="${project.war.dir}">
  234. <fileset dir="${project.resources.dir}">
  235. <exclude name="thumbs.db" />
  236. </fileset>
  237. </copy>
  238. <!-- Gitblit library dependencies -->
  239. <mkdir dir="${project.war.dir}/WEB-INF/lib"/>
  240. <copy todir="${project.war.dir}/WEB-INF/lib">
  241. <fileset dir="${basedir}/ext">
  242. <exclude name="*-sources.jar" />
  243. <exclude name="*-javadoc.jar" />
  244. <exclude name="jcommander*.jar" />
  245. <exclude name="jetty*.jar" />
  246. <exclude name="junit*.jar" />
  247. <exclude name="servlet*.jar" />
  248. </fileset>
  249. </copy>
  250. <!-- Gitblit classes -->
  251. <mkdir dir="${project.war.dir}/WEB-INF/classes"/>
  252. <copy todir="${project.war.dir}/WEB-INF/classes">
  253. <fileset dir="${project.build.dir}">
  254. <exclude name="WEB-INF/web.xml" />
  255. <exclude name="com/gitblit/tests/" />
  256. <exclude name="com/gitblit/build/**" />
  257. <exclude name="com/gitblit/GitBlitServer*.class" />
  258. <exclude name="com/gitblit/Launcher*.class" />
  259. <exclude name="com/gitblit/MakeCertificate*.class" />
  260. </fileset>
  261. </copy>
  262. <!-- Build the WAR file -->
  263. <jar basedir="${project.war.dir}" destfile="${distribution.warfile}" compress="true" />
  264. </target>
  265. <!--
  266. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  267. Build the Gitblit Website
  268. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  269. -->
  270. <target name="buildSite" depends="compile" description="Build the Gitblit website">
  271. <echo>Building Gitblit Website ${gb.version}</echo>
  272. <!-- Build Site -->
  273. <delete dir="${project.site.dir}" />
  274. <mkdir dir="${project.site.dir}" />
  275. <copy todir="${project.site.dir}">
  276. <!-- Copy selected Gitblit resources -->
  277. <fileset dir="${project.resources.dir}">
  278. <include name="background.png" />
  279. <include name="gitblit.css" />
  280. <include name="markdown.css" />
  281. <include name="gitblt_25.png" />
  282. <include name="gitblt-favicon.png" />
  283. <include name="lock_go_16x16.png" />
  284. <include name="lock_pull_16x16.png" />
  285. <include name="shield_16x16.png" />
  286. <include name="cold_16x16.png" />
  287. <include name="bug_16x16.png" />
  288. <include name="book_16x16.png" />
  289. <include name="blank.png" />
  290. </fileset>
  291. <!-- Copy Doc images -->
  292. <fileset dir="${basedir}/docs">
  293. <include name="*.png" />
  294. <include name="*.js" />
  295. </fileset>
  296. </copy>
  297. <!-- Copy Fancybox -->
  298. <mkdir dir="${project.site.dir}/fancybox" />
  299. <copy todir="${project.site.dir}/fancybox">
  300. <fileset dir="${basedir}/docs/fancybox">
  301. <exclude name="thumbs.db" />
  302. </fileset>
  303. </copy>
  304. <!-- Copy google-code-prettify -->
  305. <mkdir dir="${basedir}/src/com/gitblit/wicket/pages/prettify" />
  306. <copy todir="${project.site.dir}/prettify">
  307. <fileset dir="${basedir}/src/com/gitblit/wicket/pages/prettify">
  308. <exclude name="thumbs.db" />
  309. </fileset>
  310. </copy>
  311. <!-- Generate thumbnails of screenshots -->
  312. <java classpath="${project.build.dir}" classname="com.gitblit.build.BuildThumbnails">
  313. <classpath refid="master-classpath" />
  314. <arg value="--sourceFolder" />
  315. <arg value="${basedir}/docs/screenshots" />
  316. <arg value="--destinationFolder" />
  317. <arg value="${project.site.dir}/thumbs" />
  318. <arg value="--maximumDimension" />
  319. <arg value="250" />
  320. </java>
  321. <!-- Copy screenshots -->
  322. <mkdir dir="${project.site.dir}/screenshots" />
  323. <copy todir="${project.site.dir}/screenshots">
  324. <fileset dir="${basedir}/docs/screenshots">
  325. <include name="*.png" />
  326. </fileset>
  327. </copy>
  328. <!-- Build site pages -->
  329. <java classpath="${project.build.dir}" classname="com.gitblit.build.BuildSite">
  330. <classpath refid="master-classpath" />
  331. <arg value="--sourceFolder" />
  332. <arg value="${basedir}/docs" />
  333. <arg value="--outputFolder" />
  334. <arg value="${project.site.dir}" />
  335. <arg value="--pageHeader" />
  336. <arg value="${basedir}/docs/site_header.html" />
  337. <arg value="--pageFooter" />
  338. <arg value="${basedir}/docs/site_footer.html" />
  339. <arg value="--alias" />
  340. <arg value="index=overview" />
  341. <arg value="--alias" />
  342. <arg value="properties=gitblit.properties" />
  343. <arg value="--substitute" />
  344. <arg value="%VERSION%=${gb.version}" />
  345. <arg value="--substitute" />
  346. <arg value="%GO%=${distribution.zipfile}" />
  347. <arg value="--substitute" />
  348. <arg value="%WAR%=${distribution.warfile}" />
  349. <arg value="--substitute" />
  350. <arg value="%BUILDDATE%=${gb.buildDate}" />
  351. <arg value="--substitute" />
  352. <arg value="%JGIT%=${jgit.version}" />
  353. <arg value="--load" />
  354. <arg value="%PROPERTIES%=${basedir}/distrib/gitblit.properties" />
  355. </java>
  356. </target>
  357. <!--
  358. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  359. Compile from source, publish binaries, and build & deploy site
  360. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  361. -->
  362. <target name="buildAll" depends="buildGO,buildWAR,buildSite">
  363. <!-- Cleanup -->
  364. <delete dir="${project.build.dir}" />
  365. <delete dir="${project.war.dir}" />
  366. <delete dir="${project.deploy.dir}" />
  367. </target>
  368. <!--
  369. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  370. Publish binaries to Google Code
  371. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  372. -->
  373. <target name="publishBinaries" depends="buildGO,buildWAR" description="Publish the Gitblit binaries to Google Code">
  374. <echo>Uploading Gitblit ${gb.version} binaries</echo>
  375. <!-- Upload ZIP file -->
  376. <gcupload
  377. username="${googlecode.user}"
  378. password="${googlecode.password}"
  379. projectname="gitblit"
  380. filename="${distribution.zipfile}"
  381. targetfilename="gitblit-${gb.version}.zip"
  382. summary="Standalone, integrated Gitblit server v${gb.version}"
  383. labels="Featured, Type-Package, OpSys-All" />
  384. <!-- Upload WAR file -->
  385. <gcupload
  386. username="${googlecode.user}"
  387. password="${googlecode.password}"
  388. projectname="gitblit"
  389. filename="${distribution.warfile}"
  390. targetfilename="gitblit-${gb.version}.war"
  391. summary="Gitblit WAR v${gb.version} for your servlet container"
  392. labels="Featured, Type-Package, OpSys-All" />
  393. </target>
  394. <!--
  395. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  396. Publish site to hosting service
  397. You must add ext/commons-net-1.4.0.jar to your ANT classpath.
  398. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  399. -->
  400. <target name="publishSite" depends="buildSite" description="Publish the Gitblit site to a webserver (requires ext/commons-net-1.4.0.jar)" >
  401. <echo>Uploading Gitblit ${gb.version} website</echo>
  402. <ftp server="${ftp.server}"
  403. userid="${ftp.user}"
  404. password="${ftp.password}"
  405. remotedir="${ftp.dir}"
  406. passive="true"
  407. verbose="yes">
  408. <fileset dir="${project.site.dir}" />
  409. </ftp>
  410. </target>
  411. <!--
  412. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  413. Compile from source, publish binaries, and build & deploy site
  414. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  415. -->
  416. <target name="publishAll" depends="publishBinaries,publishSite">
  417. <!-- Cleanup -->
  418. <delete dir="${project.build.dir}" />
  419. <delete dir="${project.war.dir}" />
  420. <delete dir="${project.deploy.dir}" />
  421. </target>
  422. </project>