Ant自动构建JavaWeb

  1. 建立一个build.properties文件,方便后期的维护
#svn checkout下来的编译目录
project.lib=D:/lifeServer/WebContent/WEB-INF/lib
tomcat.lib=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/lib
tomcat.home=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0
project.dest=D:/lifeServer/WebContent/WEB-INF/classes
#svn的地址
svn.url=https://server-pc/svn/mobile2015/diningApp/sources/server/lifeServer
#svn的用户名
svn.username=boyaoyao
#svn的密码
svn.userpw=boyaoyao
#需要checkout svn的最新版本号 写head就可以了
svn.revision=HEAD
#定义发布目录(checkout到哪个目录)
project.webApp=D:/lifeServer
#tomcat的webapps目录
tomcat.webApp=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/webapps
#服务器端的图片路径
img.source=C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/webapps/lifeServer/upload
#需要把上一版服务器下的图片拷贝到这个目录
img.to=D:/lifeServerImg
  1. 编写build.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="lifeServer" default="tomcat.start" basedir="../">    
    <!-- 一上来会生成ant整个流程的log文件-->
    <tstamp> 
        <!-- 格式化当前系统时间-->
        <format property="TIMESTAMP" pattern="yyyyMMddHHmmss"/> 
    </tstamp> 
    <!-- 生成文件-->
    <record name="log${TIMESTAMP}.txt" loglevel="verbose" append="no" action="start"/>
    <!--用压缩文件打开svnant.jar会看到 svnantlib.xml-->
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant" />
    <!--引入santsvn 的jar包-->
    <path id="path.svnant">
        <pathelement location="D:/apache-ant-1.9.6/lib/svnant.jar"/>
        <pathelement location="D:/apache-ant-1.9.6/lib/svnClientAdapter.jar"/>
        <pathelement location="D:/apache-ant-1.9.6/lib/svnjavahl.jar"/>
        <pathelement location="D:/apache-ant-1.9.6/lib/svnkit-1.7.8.jar"/>
        <pathelement location="D:/apache-ant-1.9.6/lib/ganymed.jar" />
        <pathelement location="D:/apache-ant-1.9.6/lib/svnkit-javahl16-1.7.8.jar" />
        <pathelement location="D:/apache-ant-1.9.6/lib/sqljet-1.1.6.jar" />
        <pathelement location="D:/apache-ant-1.9.6/lib/antlr-runtime-3.4.jar" />
        <pathelement location="D:/apache-ant-1.9.6/lib/sequence-library-1.0.2.jar" />
    </path>

    <!--准备编译的目录  也就是svn checkout下来的目录 -->
    <path id="classpath">
        <fileset dir="${project.lib}">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${tomcat.lib}">
            <include name="*.jar" />
        </fileset>
    </path>
    <!--这是svn的配置 -->
    <svnSetting id="svnsettings" svnkit="true" javahl="false" username="${svn.username}"  password="${svn.userpw}" />
    <!--首先是先将tomcat停止 kill tomcat进程  这里是安装版的tomcat  免安装版的大同小异 -->
    <target name="tomcat.stop">
        <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
            <jvmarg value="-Dcatalina.home=${tomcat.home}"/>
                <arg line="stop"/>
        </java>
            <!--这里做了一部特殊的操作 ,
            我的项目启动后会启动一个缓冲的服务 
            端口号为40004 这是必须得把缓冲的服务进行kill 
            要不然会影响下次启动,会报端口被占用
            bat文件一会儿会贴上
            -->
              <exec executable="killtomcat.bat" dir="C:/AutoAntCheck">
             </exec>
    </target>


    <!-- 这里进行copyold的操作  就是把上一版用户上传的图片进行拷贝 拷贝到img.to路径  
        depends的意思就是说copyold这个操作依赖于tomcat.stop这个操作 , 也就是说
        tomcat.stop这个操作执行完成后 才可以执行这个操作。
    -->
    <target name="copyOld" depends="tomcat.stop">
    <copy todir="${img.to}">
       <fileset dir="${img.source}">
        <!-- ***代表该目录下的子文件夹下的所有内容 -->
         <include name="***" />
       </fileset>
    </copy>
    </target>
    <!--然后删除tomcat中上一版项目 -->
    <target name="clean" depends="copyOld">
        <delete dir="${project.webApp}"/>
        <mkdir dir="${project.webApp}"/>
    </target>
    <!--然后开始执行heckout -->
    <target name="checkoutThis" depends="clean">
        <!--svnsettings在上面有定义 -->
        <svn refid="svnsettings" >
            <checkout url="${svn.url}" revision="${svn.revision}" destPath="${project.webApp}"/>
            <!-- 获取版本号 ,如果作此操作checkout结束后会把当前的版本号写入log日志中 -->   
            <info target="${project.webApp}" verbose="true"/>
        </svn>
    </target>
    <!--checkout结束后开始 编译class文件 -->
    <target name="compile" depends="checkoutThis">
        <javac encoding="utf-8" srcdir="${project.webApp}/src" destdir="${project.dest}" debug="false" nowarn="true" deprecation="false" optimize="false" failonerror="true">
            <classpath refid="classpath" />
        </javac>
    </target>
    <!-- 编译成功后 进行打war包 -->       
    <target name="war" depends="compile">
        <war destfile="${tomcat.webApp}/lifeServer.war" webxml="${project.webApp}/WebContent/WEB-INF/web.xml" >
            <fileset dir="${project.webApp}/WebContent" excludes="**/*.jar"/>
            <fileset dir="${project.webApp}/res" excludes="**/*.jar"/>
            <lib dir="${project.lib}" />
            <!-- 拷贝build/classes下的class文件 -->
            <classes dir="${project.dest}" />
        </war>
    </target> 
    <!-- 然后将上一版本中uupload中的所有文件copy到新的服务中-->
    <target name="copyNew" depends="war">
        <copy todir="${img.source}">
           <fileset dir="${img.to}">
             <include name="***" />
           </fileset>
        </copy>
    </target>
    <!--然后启动tomcat-->
    <target name="tomcat.start" depends="copyNew">  
    <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true" >  
        <jvmarg value="-Dcatalina.home=${tomcat.home}" />  
    </java>  
    </target>  

</project>
  1. 编写bat文件
@ echo 先回到根目录
cd /
@ echo 再去找build.xml的目录,因为要做windows下的计划任务 要启动这个文件, 路径这么写安全一些
cd C:\AutoAntCheck
@ echo  去读我们写的properties文件
ant -propertyfile build.properties
  1. 上面说道需要杀掉一个端口号对应的进程,这里有bat文件
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :这里写你要杀进程的端口号') DO TaskKill.exe /PID %%P /F
  1. 如果想进行windows的计划任务实现定时定点进行构建项目的话,在计划和任务中定时打开上面第3个bat文件就可以了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值