利用ant进行项目发布

虽然现在maven很流行,我也看了下,屡屡浅尝辄止。还是比较喜欢ant,而且对于我当前的工作,ant也够用了,所以对maven的学习也就没了兴趣,仅剩下对新事物的热情。

一个较复杂的工程项目可能包含很多目录,包括源代码文件、资源文件、文档等等一系列的东东,而且在项目发布时,除了考虑自动化、方便性(比如从cvs取最新版本、编译、打包、关闭应用服务器、部署、重新启动服务器等等)以外,还要考虑一些用户级的问题(比如修改了页面js后,怎样保证用户端从服务器端下载最新的js而不是用其本地浏览器缓存的js),另外基于源代码安全性考虑,可能还要进行代码混淆编译等。

下边是我们在实际项目中使用的一个ant构建配置:代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. 功能:cvs更新、编译(同时混淆)、生成注册文件、给页面文件的css和js引用增加版本号、打包、部署、运行tomcat等
  4. 作者:huangyuanmu
  5. 日期:2008-07-02.
  6. -->
  7. <project basedir="." default="build" name="wxwtdz">
  8. <!-- property -->
  9. <property file="resource/ant.properties" />
  10. <property environment="env" />
  11. <property name="tomcat.path" value="${tomcat.path}" />
  12. <property name="server.mac" value="${server.mac}" />
  13. <property name="cvsroot" value="${cvs.root}" />
  14. <property name="cvs.password" value="${cvs.password}" />
  15. <property name="cvs.module.name" value="xxx项目" />
  16. <property name="websrc.dir" value="web" />
  17. <property name="src.common.dir" value="common" />
  18. <property name="src.shell.dir" value="shell" />
  19. <property name="src.sys.dir" value="sys" />
  20. <property name="src.hjgl.dir" value="hjgl" />
  21. <property name="src.pzgl.dir" value="pzgl" />
  22. <property name="src.sbzs.dir" value="sbzs" />
  23. <property name="src.zhcx.dir" value="zhcx" />
  24. <property name="src.zhdy.dir" value="zhdy" />
  25. <property name="src.zhjb.dir" value="zhjb" />
  26. <property name="src.scheduling.dir" value="scheduling" />
  27. <property name="src.resource.dir" value="resource" />
  28. <property name="src.rpc.dir" value="rpc" />
  29. <property name="customize.dir" value="customize" />
  30. <property name="customize.resource.dir" value="customize/resource" />
  31. <property name="build.dir" value="build" />
  32. <property name="dist.dir" value="dist" />
  33. <property name="deploy.dir" value="${tomcat.path}/webapps" />
  34. <property name="dest.jar" value="wtdz.jar" />
  35. <property name="dest.war" value="wtdz.war" />
  36. <property name="dest.dir" value="wtdz" />
  37. <property name="jdk.source" value="1.5" />
  38. <property name="jdk.target" value="1.5" />
  39. <property name="deploy.web.dir" value="wtdz" />
  40. <property name="training.dir" value="training" />
  41. <property name="training.resource.dir" value="training/resource" />
  42. <property name="training.war" value="wtdzcs.war" />
  43. <!-- patternset -->
  44. <patternset id="jar.pattern">
  45. <include name="**/*.jar" />
  46. </patternset>
  47. <patternset id="config.pattern">
  48. <include name="**/*.xml" />
  49. <include name="**/*.properties" />
  50. <include name="**/*.prop" />
  51. <include name="**/*.conf" />
  52. <include name="**/*.tld" />
  53. <include name="**/*.ftl" />
  54. <include name="**/*.vm" />
  55. </patternset>
  56. <patternset id="build.pattern">
  57. <include name="log" />
  58. <include name="**/*.jar" />
  59. <include name="**/*.class" />
  60. <include name="**/*.vm" />
  61. <include name="**/*.rep" />
  62. <include name="**/*.exe" />
  63. <include name="**/*.log" />
  64. <include name="**/*.bat" />
  65. <include name="**/*.xls" />
  66. <include name="**/*.xml" />
  67. <include name="**/*.properties" />
  68. <include name="**/*.prop" />
  69. <include name="**/*.conf" />
  70. <include name="**/*.tld" />
  71. <include name="**/*.ftl" />
  72. <include name="**/*.jsp" />
  73. <include name="**/*.htm" />
  74. <include name="**/*.html" />
  75. <include name="**/*.js" />
  76. <include name="**/*.css" />
  77. <include name="**/*.swf" />
  78. <include name="**/*.jpg" />
  79. <include name="**/*.gif" />
  80. <include name="**/*.png" />
  81. <include name="**/*.rar" />
  82. <include name="**/*.wmv" />
  83. <include name="**/*.mp3" />
  84. <include name="**/*.3gp" />
  85. <include name="**/*.doc" />
  86. <include name="**/*.htc" />
  87. <exclude name="WEB-INF/**/*" />
  88. <exclude name="**/web.xml" />
  89. </patternset>
  90. <patternset id="src.pattern">
  91. <include name="**/*.java" />
  92. <include name="**/*.vm" />
  93. <include name="**/*.rep" />
  94. <include name="**/*.exe" />
  95. <include name="**/*.xml" />
  96. <include name="**/*.xls" />
  97. <include name="**/*.properties" />
  98. <include name="**/*.prop" />
  99. <include name="**/*.conf" />
  100. <include name="**/*.tld" />
  101. <include name="**/*.ftl" />
  102. <include name="**/*.jsp" />
  103. <include name="**/*.htm" />
  104. <include name="**/*.html" />
  105. <include name="**/*.js" />
  106. <include name="**/*.css" />
  107. <include name="**/*.swf" />
  108. <include name="**/*.jpg" />
  109. <include name="**/*.gif" />
  110. <include name="**/*.png" />
  111. <exclude name="**/web.xml" />
  112. </patternset>
  113. <!-- path -->
  114. <path id="compile.classpath">
  115. <fileset dir="${tomcat.path}/lib">
  116. <patternset refid="jar.pattern" />
  117. </fileset>
  118. <fileset dir="${websrc.dir}/WEB-INF/lib">
  119. <patternset refid="jar.pattern" />
  120. </fileset>
  121. <fileset dir="${build.dir}/WEB-INF/classes">
  122. <patternset refid="build.pattern" />
  123. </fileset>
  124. </path>
  125. <!-- taskdef -->
  126. <!-- 给页面文件中的js和css引用增加版本号 -->
  127. <taskdef name="addVersion" classname="cn.xxx.wtdz.ant.task.AddJsAndCssVersionToVm" classpath="bin/ant-task.jar">
  128. </taskdef>
  129. <!-- 利用混淆器进行编译 -->
  130. <taskdef resource="jockytasks">
  131. </taskdef>
  132. <!-- 生成注册码文件 -->
  133. <taskdef name="genRegKey" classname="cn.xxx.wtdz.ant.task.GenRegKey" classpath="bin/ant-task.jar">
  134. </taskdef>
  135. <!-- target -->
  136. <!-- 删除构建发布文件夹 -->
  137. <target name="clean">
  138. <delete dir="${build.dir}" />
  139. <delete dir="${dist.dir}" />
  140. </target>
  141. <!-- 创建构建发布文件夹 -->
  142. <target name="init" depends="clean">
  143. <mkdir dir="${build.dir}" />
  144. <mkdir dir="${build.dir}/WEB-INF/classes" />
  145. <mkdir dir="${dist.dir}" />
  146. </target>
  147. <!-- cvs更新(check out) -->
  148. <target name="checkout">
  149. <cvspass cvsroot="${cvs.root}" password="${cvs.password}" passfile="ant-cvs.cvspass" />
  150. <cvs command="-q checkout -d wxwtdz -P" failonerror="true" dest=".." cvsroot="${cvs.root}" package="${cvs.module.name}" passfile="ant-cvs.cvspass" />
  151. </target>
  152. <!-- 从源文件夹中拷贝文件到构建文件夹中 -->
  153. <target name="copysrc" depends="init">
  154. <copy todir="${build.dir}/src" overwrite="true">
  155. <fileset dir="${src.common.dir}">
  156. </fileset>
  157. <fileset dir="${src.shell.dir}">
  158. </fileset>
  159. <fileset dir="${src.sys.dir}">
  160. </fileset>
  161. <fileset dir="${src.hjgl.dir}">
  162. </fileset>
  163. <fileset dir="${src.pzgl.dir}">
  164. </fileset>
  165. <fileset dir="${src.sbzs.dir}">
  166. </fileset>
  167. <fileset dir="${src.zhcx.dir}">
  168. </fileset>
  169. <fileset dir="${src.zhdy.dir}">
  170. </fileset>
  171. <fileset dir="${src.zhjb.dir}">
  172. </fileset>
  173. <fileset dir="${src.scheduling.dir}">
  174. </fileset>
  175. <fileset dir="${src.resource.dir}">
  176. <exclude name="log4j.xml"/>
  177. </fileset>
  178. <fileset dir="${src.rpc.dir}">
  179. </fileset>
  180. <fileset dir="${customize.resource.dir}">
  181. </fileset>
  182. </copy>
  183. <copy todir="${build.dir}">
  184. <fileset dir="${websrc.dir}">
  185. <exclude name="WEB-INF/classes/**/*" />
  186. </fileset>
  187. </copy>
  188. <copy todir="${build.dir}" overwrite="true">
  189. <fileset dir="${customize.dir}">
  190. <exclude name="resource/**" />
  191. </fileset>
  192. </copy>
  193. </target>
  194. <!-- 编译、拷贝文件 -->
  195. <target name="compile" depends="copysrc">
  196. <jocky jar="bin/jocky.jar" enable="true" level="private">
  197. </jocky>
  198. <javac srcdir="${build.dir}/src" destdir="${build.dir}/WEB-INF/classes" debug="true" source="1.5" target="1.5" >
  199. <classpath refid="compile.classpath" />
  200. </javac>
  201. <copy todir="${build.dir}/WEB-INF/classes" overwrite="true">
  202. <fileset dir="${build.dir}/src">
  203. <patternset refid="config.pattern" />
  204. </fileset>
  205. </copy>
  206. <delete dir="${build.dir}/src" />
  207. </target>
  208. <!-- 给页面文件中的css和js引用增加版本号 -->
  209. <target name="addPageVersion" depends="compile">
  210. <addVersion path="${build.dir}" />
  211. </target>
  212. <!-- 构建war包 -->
  213. <target name="build" depends="addPageVersion">
  214. <!--<target name="build" depends="compile">-->
  215. <delete file="${dist.dir}/${dest.war}" />
  216. <mkdir dir="${build.dir}/log" />
  217. <genRegKey path="${dist.dir}" key="${server.mac}"/>
  218. <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml">
  219. <webinf dir="${build.dir}/WEB-INF" />
  220. <fileset dir="${build.dir}">
  221. <patternset refid="build.pattern" />
  222. </fileset>
  223. <fileset file="${dist.dir}/key.properties">
  224. </fileset>
  225. </war>
  226. <delete file="${dist.dir}/key.properties" />
  227. </target>
  228. <!-- 构建试用版war包 -->
  229. <target name="buildDebug" depends="addPageVersion">
  230. <delete file="${dist.dir}/${dest.war}" />
  231. <mkdir dir="${build.dir}/log" />
  232. <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml">
  233. <webinf dir="${build.dir}/WEB-INF" />
  234. <fileset dir="${build.dir}">
  235. <patternset refid="build.pattern" />
  236. </fileset>
  237. </war>
  238. </target>
  239. <!-- 部署前先关闭tomcat,并压缩文件 -->
  240. <target name="zip" depends="addPageVersion">
  241. <echo message="now stopping tomcat service" />
  242. <exec dir="${tomcat.path}/bin" executable="cmd">
  243. <env key="CATALINA_HOME" path="${tomcat.path}" />
  244. <arg value="/c shutdown.bat" />
  245. </exec>
  246. <delete file="${deploy.dir}/${dest.war}" />
  247. <delete file="${deploy.dir}/${dest.dir}" />
  248. <genRegKey path="${build.dir}" key="${server.mac}"/>
  249. <zip destfile="${deploy.dir}/${dest.war}">
  250. <fileset dir="${build.dir}">
  251. <include name="**/*" />
  252. </fileset>
  253. </zip>
  254. </target>
  255. <!-- 解压文件,并启动tomcat -->
  256. <target name="deploy" depends="zip">
  257. <echo message="deploy web project to ${deploy.dir}..." />
  258. <unzip dest="${deploy.dir}/${deploy.web.dir}" overwrite="true" src="${deploy.dir}/${dest.war}">
  259. </unzip>
  260. <echo message="now starting tomcat service" />
  261. <exec dir="${tomcat.path}/bin" executable="java.exe">
  262. <env key="CATALINA_HOME" path="${tomcat.path}" />
  263. <arg line="-jar -Duser.dir=${tomcat.path} ${tomcat.path}/bin/bootstrap.jar start" />
  264. </exec>
  265. </target>
  266. <!-- 把项目所有class文件打包 -->
  267. <target name="archive" depends="compile">
  268. <delete file="${dist.dir}/${dest.jar}" />
  269. <jar destfile="${dist.dir}/${dest.jar}" basedir="${build.dir}/WEB-INF/classes" />
  270. </target>
  271. <!-- 导出远程调用接口程序(住房出租票证管理接口) -->
  272. <target name="buildrpc" depends="compile">
  273. <delete file="${dist.dir}/wtdz-rpc.jar">
  274. </delete>
  275. <mkdir dir="${build.dir}/rpc/src" />
  276. <mkdir dir="${build.dir}/rpc/classes" />
  277. <copy todir="${build.dir}/rpc/src">
  278. <fileset dir="${src.rpc.dir}">
  279. <exclude name="**/impl/*" />
  280. <exclude name="**/aop/*" />
  281. </fileset>
  282. </copy>
  283. <jocky enable="false">
  284. </jocky>
  285. <javac srcdir="${build.dir}/rpc/src" destdir="${build.dir}/rpc/classes" debug="true">
  286. <classpath refid="compile.classpath" />
  287. </javac>
  288. <jar destfile="${dist.dir}/wtdz-rpc.jar">
  289. <fileset dir="${build.dir}/rpc/classes" includes="**/*.class" />
  290. <zipfileset src="${websrc.dir}/WEB-INF/lib/hessian-3.1.3.jar">
  291. </zipfileset>
  292. </jar>
  293. <delete dir="${build.dir}/rpc/src">
  294. </delete>
  295. <delete dir="${build.dir}/rpc/classes">
  296. </delete>
  297. </target>
  298. <!-- 从源文件夹中拷贝文件到构建文件夹中 -->
  299. <target name="copysrcTraining" depends="copysrc">
  300. <copy todir="${build.dir}/src" overwrite="true">
  301. <!-- 培训版本:从training文件夹中拷贝文件到构建文件夹中 -->
  302. <fileset dir="${training.dir}">
  303. <include name="cn/**"/>
  304. </fileset>
  305. <fileset dir="${training.resource.dir}">
  306. </fileset>
  307. </copy>
  308. <copy todir="${build.dir}" overwrite="true">
  309. <fileset dir="${training.dir}">
  310. <include name="images/**"/>
  311. </fileset>
  312. </copy>
  313. </target>
  314. <!-- 编译、拷贝文件 -->
  315. <target name="compileTraining" depends="copysrcTraining">
  316. <jocky jar="bin/jocky.jar" enable="true" level="private">
  317. </jocky>
  318. <javac srcdir="${build.dir}/src" destdir="${build.dir}/WEB-INF/classes" debug="true" source="1.5" target="1.5" >
  319. <classpath refid="compile.classpath" />
  320. </javac>
  321. <copy todir="${build.dir}/WEB-INF/classes" overwrite="true">
  322. <fileset dir="${build.dir}/src">
  323. <patternset refid="config.pattern" />
  324. </fileset>
  325. </copy>
  326. <delete dir="${build.dir}/src" />
  327. </target>
  328. <!-- 给页面文件中的css和js引用增加版本号 -->
  329. <target name="addPageVersionTraining" depends="compileTraining">
  330. <addVersion path="${build.dir}" />
  331. </target>
  332. <!-- 构建war包 -->
  333. <target name="buildTraining" depends="addPageVersionTraining">
  334. <!--<target name="build" depends="compile">-->
  335. <delete file="${dist.dir}/${dest.war}" />
  336. <mkdir dir="${build.dir}/log" />
  337. <genRegKey path="${dist.dir}" key="${server.mac}"/>
  338. <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml">
  339. <webinf dir="${build.dir}/WEB-INF" />
  340. <fileset dir="${build.dir}">
  341. <patternset refid="build.pattern" />
  342. </fileset>
  343. <fileset file="${dist.dir}/key.properties">
  344. </fileset>
  345. </war>
  346. <delete file="${dist.dir}/key.properties" />
  347. </target>
  348. <target name="training" depends="buildTraining">
  349. <move file="${dist.dir}/${dest.war}" tofile="${dist.dir}/${training.war}"/>
  350. </target>
  351. </project>
时间: 2024-08-28 14:25:57

利用ant进行项目发布的相关文章

使用ant编译项目技巧

ant编译时指定jdk的版本 系统的jdk版本是1.6,而项目使用的jdk版本是1.5,所以在编译时需要指定jdk的版本为1.5,可以使用下面的方法为javac 任务指定fork和executable,是用指定编译器编译,这个方法更灵活,您甚至可以指定非sun公司的java编译器.详见:6.5节 编译时忽略指定的java文件 在编译时可能有的包下面的java文件不需要编译,那么就可以使用这个用法,详见:6.5节 打包时忽略指定的class文件 在打包时可能有的class文件不想打入到包中,那么就

项目发布与部署

项目发布与部署 章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4. 在project.json文件的commands节点,我们可以

整理的Unity导出安卓工程利用ANT进行多渠道批量打包APK

Unity导出的安卓工程利用ant进行多渠道循环批量打包 一:设置JAVA环境变量 做android开发的配置这个是基础. win7 下配置java环境变量,下面是链接 http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html 二:配置Android的SDK环境变量 除了需要Java的环境变量,我们还需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的

利用ant进行远程tomcat部署

在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署.这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 1.配置tomcat的用户角色 tomcat7中的用户角色有: manager-gui — Access to the HTML i

解读ASP.NET 5 &amp; MVC6系列(3):项目发布与部署

原文:解读ASP.NET 5 & MVC6系列(3):项目发布与部署 本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4.

Win10下IIS配置、项目发布、添加网站

Win10下IIS配置 1.找到控制面板:[开始]菜单鼠标右击,打开[控制面板] 2.打开控制面板,点击[程序],点击[启用或关闭Windows功能] 下一步,点击[启用虎关闭Windows功能] 3. 开始修改IIS了,我是这样勾上的,有可能比较多. 4. 验证IIS是否正确安装,等待几分钟后IIS配置完成.在浏览器输入http://localhost/iisstart.htm会出现 IIS安装成功页面.第一次修改的时候出现了成功页面,但是后来删除了IIS中默认的网站就打不开了,但是不影响的.

VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)

接着上一篇文章,详细说说如何把一个带CEGUI的项目发布到XP平台. 这个问题纠缠了我好几天.这里把详细解决思路记下来.有同样问题的朋友可以少走很多弯路. 核心方法就一句话.“你项目使用的所有外部依赖库都用/MT编译.” 1.准备. 首先你要具备如下工具:CEGUI源码:FreeType源码:Pcre源码:CMake工具.我会在下文说明原因. 各个开源库的版本号,请参考你的CEGUI引用的各自的头文件分别下载. FreeType开源库主页:http://sourceforge.net/proje

eclipse 项目发布到tomcat中(转)

转来的,有侵权联系删除 Eclipse的web工程至Tomcat默认的部署目录是在工程空间下,本文旨在将部署目录改为Tomcat安装目录,并解决依赖包输出问题. 1.在Eclipse中添加Tomcat服务器. 2.将web工程发布至tomcat: 选择刚添加的Tomcat: 此时Eclipse将自动生成Servers工程: 3.在Servers视图,Remove删除刚刚发布的项目: 4.打开Tomcat服务器配置项: 5.修改以下两个配置项,Tomcat保持启动状态,否则Server Locat

.NET项目发布网站具体步骤和注意事项

ASP.NET项目发布网站具体步骤 1.     在解决方案管理器中右键项目名称,点击“发布网站”,如图 2.     在发布窗口中选择“文件系统”,然后选择文件路径(一般放在wwwroot下),勾选“发布前删除所有现有文件”,点击发布按钮 3.     发布成目录以后,切换到IIS,可通过“应用程序”(即虚拟目录)方式,也可通过网站方式发布网站 此时YJXM是以目录的形式存在的,必须要转化为“应用程序”(即虚拟目录)的方式,选择“转换为应用程序”菜单,选择应用程序池为“DefaultAppPo