码迷,mamicode.com
首页 > 其他好文 > 详细

利用ant进行项目发布

时间:2015-10-14 14:18:29      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

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

利用ant进行项目发布

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/4877246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!