ant+svn+tomcat实现自动构建

来源:互联网 发布:人工智能机器人取代 编辑:程序博客网 时间:2024/05/19 03:41

前段时间用做了一个简单的web api服务,在调试的过程中感觉到手动发布实在是效率低而且容易出错,于是花点时间搞了一下ant+svn+tomcat的自动构建,效果不错,今天拿出来分享一下。

  • 准备工作

         SVN服务器:VisualSVN-Server-2.5.8.msi,这windows下比较好用的一个svn服务端,安装和配置都很简单。

         Ant: Ant 1.7(我用的比较老的版本)。

         Ant插件:svnant1.3(http://subclipse.tigris.org/svnant.html), ANT集成SVN的插件。

  • 步骤
  1. 首先安装配置好SVN服务器和ANT(具体的过程我就不累赘了)。
  2. 安装svnant插件,将svnant.1.3.0解压后的lib目录下所有的jar包拷贝至Ant安装目录下的lib文件夹。
  3. 编写脚本,如下

[html] view plaincopy
  1. <project name="imweb" basedir=".">  
  2.   
  3.     <!--############################################################项目目录 -->  
  4.       
  5.     <!--项目根-->  
  6.     <property name="project" value="project" />  
  7.     <property name="src" value="${project}/src" />  
  8.     <property name="resources" value="${project}/src"/>  
  9.     <property name="test" value="${project}/test"></property>  
  10.     <property name="target" value="${project}/target"></property>  
  11.     <property name="main-target" value="${project}/target/classes"/>  
  12.     <property name="test-target" value="${project}/target/test-classes"/>  
  13.     <!--web 目录 -->  
  14.     <property name="web-root" value="${project}/WebContent"/>  
  15.   
  16.     <!-- ant 属性文件 -->  
  17.     <property file="build.properties"/>  
  18.   
  19.     <!--############################################################软件依赖 -->  
  20.     <!--ant lib目录-->  
  21.     <property name="ant-lib" value="${ant.home}/lib"/>  
  22.     <!-- tomcat lib目录 -->  
  23.     <property name="tomcat-lib" value="${tomcat.home}/lib"/>  
  24.       
  25.     <!-- 定义classpath-->  
  26.     <path id="classpath">  
  27.         <fileset dir="${ant-lib}" includes="***.jar"></fileset>  
  28.         <fileset dir="${tomcat-lib}" includes="***.jar"></fileset>  
  29.         <fileset dir="${web-root}/WEB-INF/lib" includes="***.jar"></fileset>  
  30.     </path>  
  31.   
  32.     <!-- 引用svn task文件,使用svn任务可以使用-->  
  33.     <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />  
  34.   
  35.   
  36.     <!-- 清理-->  
  37.     <target name="clean">  
  38.         <delete dir="${project}"></delete>  
  39.     </target>  
  40.     <!-- 初始化-->  
  41.     <target name="init" depends="clean">  
  42.         <mkdir dir="${project}"/>  
  43.         <mkdir dir="${main-target}"/>  
  44.         <mkdir dir="${test-target}"/>  
  45.     </target>  
  46.   
  47.     <!-- 检出代码 这里使用 export 不是checkout 二者区别 checkout会svn相关信息文件检出,export只是检出最新的文件-->  
  48.   
  49.     <target name="checkout" depends="init">  
  50.         <svn username="${svn.username}" password="${svn.password}">  
  51.             <export srcUrl="${svn.url}" revision="HEAD" destPath="${project}"  force="true" />  
  52.         </svn>  
  53.     </target>  
  54.     <!-- 编译 -->  
  55.     <target name="compile" depends="checkout">  
  56.         <javac srcdir="${src}" destdir="${main-target}" encoding="UTF-8" includeAntRuntime="false">  
  57.             <classpath refid="classpath"></classpath>  
  58.         </javac>  
  59.         <copy todir="${main-target}">  
  60.             <fileset dir="${resources}">  
  61.                 <exclude name="sql/**"/>  
  62.             </fileset>  
  63.         </copy>  
  64.     </target>  
  65.     <!-- 打war包 -->  
  66.     <target name="build" depends="compile">  
  67.           
  68.         <war destfile="${target}/${deploy.name}.war" webxml="${web-root}/WEB-INF/web.xml">  
  69.             <fileset dir="${web-root}"></fileset>  
  70.             <classes dir="${main-target}"></classes>  
  71.         </war>  
  72.         <delete dir="${main-target}"></delete>  
  73.         <delete dir="${test-target}"></delete>  
  74.     </target>  
  75.       
  76.       
  77.     <!--shutdowntomcat -->  
  78.       
  79.     <target name="shutdowntomcat" description="========shutdowntomcat===========">  
  80.         <echo message="正在关闭服务器。。。" />  
  81.         <exec executable="${tomcat.home}/bin/shutdown.bat" failonerror="false"></exec>  
  82.         <echo message="服务器成功关闭" />  
  83.         <sleep seconds="10"/>  
  84.         <!-- 删除之前解压的war包-->  
  85.         <delete dir="${tomcat.home}/webapps/${deploy.name}"></delete>  
  86.     </target>  
  87.       
  88.     <!--startuptomcat -->  
  89.     <target name="startuptomcat" description="========startuptomcat===========">  
  90.         <sleep seconds="5"/>  
  91.         <echo message="正在启动服务器。。。" />  
  92.         <exec executable="${tomcat.home}/bin/startup.bat" failonerror="false"></exec>  
  93.         <echo message="服务器启动成功" />  
  94.     </target>  
  95.       
  96.     <!--部署到tomcat下面 -->  
  97.     <target name="deploy" depends="build">  
  98.         <ant target="shutdowntomcat"/>  
  99.         <copy file="${target}/${deploy.name}.war" todir="${tomcat.home}/webapps" />  
  100.         <ant target="startuptomcat"/>  
  101.     </target>   
  102.   
  103.       
  104. </project>  
         build.properties文件如下:
[html] view plaincopy
  1. tomcat.home=D:/apache-tomcat-6.0.35  
  2. ant.home=D:/apache-ant-1.7.1  
  3.   
  4. svn.url=https://hjt2012.com/svn/java/branches/imweb  
  5. svn.username=svn  
  6. svn.password=123456  
  7.   
  8. deploy.name=imweb  

  • 执行脚本

         可以编写一个bat批处理文件,这样在执行的时候只需要双击一下就可以完全搞定。

         bat文件如下:

[html] view plaincopy
  1. @echo off  
  2. d:  
  3. cd imweb  
  4. ant deploy  
  5. exit  


0 0
原创粉丝点击