51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8074|回复: 2
打印 上一主题 下一主题

antsvn 自动更新和发布

[复制链接]
  • TA的每日心情
    无聊
    前天 10:29
  • 签到天数: 71 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2018-6-15 16:33:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    团队管理中,当项目非常多,而且发布频繁,手动发布往往非常繁琐,决定用自动化处理。

    采用ant +svn+svnant

    在网络上参考很多人的处理,组合成对自己比较实用的。



    准备环境:

    1、安装svn client 这个就不多说了。

    2、安装ant,在这里我采用ant 1.8.3版本:http://ant.apache.org/,官网上下载zip 解压缩,并配置环境变量。

    3、下载svnant ,并解压缩 ,把对应的lib\jar包放入 ant lib 包中。

          下载地址: http://subclipse.tigris.org/file ... 42/svnant-1.3.1.zip

          这步很关键,不然svn命令运行不了!



    思路:

           1、固定一个目录,专门做发布目录,根据不同项目,在期底下建立与项目名称相同的目录。

           2、建立build等目录,打成war包后删除对应的build包等操作

           3、自动发布到tomcat



    以下代码实现的是J2EE web工程打包发布


    1. <p>
    2. </p><p>[java] view plain copy</p><p><?xml version="1.0" encoding="UTF-8"?>  </p><p>  </p><p><project name="deploy" default="autodeploy" basedir=".">  </p><p>    <property environment="env" />  </p><p>    <property name="projectName" value="svnant" />  </p><p>    <property name="temporary.dir" value="D:/SVNTest/${projectName}"/>  </p><p>  </p><p>    <property name="deployVersion.dir" value="${temporary.dir}/deployVersion"/>  </p><p>    <property name="tomcat.home" value="d:/apache-tomcat-6.0.32"/>  </p><p>    <property name="ant-lib.dir" value="F:/apache-ant-1.8.3/lib"/>  </p><p>  </p><p>    <property name="svn.url"   </p><p>                         value="http://subclipse.tigris.org/svn/subclipse/trunk/svnant/"/>  </p><p>    <property name="svn.name" value="guest"/>  </p><p>    <property name="svn.password" value=""/>  </p><p>  </p><p>    <tstamp>  </p><p>        <format property="deploy.time" pattern="yy-MM-dd HH.mm" />  </p><p>    </tstamp>  </p><p>  </p><p>    <delete dir="${temporary.dir}" />  </p><p>    <mkdir dir="${temporary.dir}" />  </p><p>  </p><p>    <path id="svnant.dir">  </p><p>        <fileset dir="${ant-lib.dir}">  </p><p>            <include name="ganymed.jar" />  </p><p>            <include name="jna.jar" />  </p><p>  </p><p>            <include name="svnant.jar" />  </p><p>            <include name="svnClientAdapter.jar" />  </p><p>            <include name="svnjavahl.jar" />  </p><p>            <include name="svnkit.jar" />  </p><p>        </fileset>  </p><p>    </path>  </p><p>    <!-- define the svn task-->  </p><p>    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"  </p><p>                       classpathref="svnant.dir" />  </p><p>    <!-- prepare for the checking out:clean the directory  -->  </p><p>    <target name="prepare"  </p><p>        description="Prepare the dirs for the task">  </p><p>        <delete dir="${temporary.dir}/${projectName}" />  </p><p>        <mkdir dir="${temporary.dir}/${projectName}" />  </p><p>    </target>  </p><p>  </p><p>  </p><p>    <target name="checkout" depends="prepare">  </p><p>        <echo>+=========checkout start============+</echo>  </p><p>        <echo>+                                                                      +</echo>  </p><p>        <echo>+                                                                      +</echo>  </p><p>        <svn username="${svn.name}" password="${svn.password}"   </p><p>                         javahl="false" failonerror="false" svnkit="true">  </p><p>            <checkout url="${svn.url}" revision="HEAD"   </p><p>                                         destPath="${temporary.dir}/${projectName}" />  </p><p>        </svn>  </p><p>        <echo>+                                                                      +</echo>  </p><p>        <echo>+========= checkout end ============+</echo>  </p><p>    </target>  </p><p>  </p><p>    <target name="ant_app" depends="checkout">  </p><p>        <echo>+ ======================== +</echo>  </p><p>        <echo>+                                                       +</echo>  </p><p>        <echo>+  anting application to war and ear +</echo>  </p><p>        <echo>+                                                       +</echo>  </p><p>        <echo>+ ======================== +</echo>  </p><p>        <ant dir="./" antfile="build.xml" inheritall="off"/>  </p><p>    </target>  </p><p>  </p><p>    <target name="mv_to_pack" depends="ant_app">  </p><p>        <delete dir="${deployVersion.dir}\${deploy.time}" />  </p><p>        <mkdir dir="${deployVersion.dir}\${deploy.time}" />  </p><p>        <move file="${temporary.dir}/${projectName}.war" todir="${deployVersion.dir}/${deploy.time}" />  </p><p>    </target>  </p><p>    <target name="execute" depends="mv_to_pack">  </p><p>    </target>  </p><p>  </p><p>    <!--shutdown-->  </p><p>    <target name="shutdown" description="========shutdowntomcat===========">  </p><p>        <exec executable="${tomcat.home}/bin/shutdown.bat" failonerror="false">  </p><p>        </exec>  </p><p>        <sleep seconds="1"/>  </p><p>        <delete file="${tomcat.home}/webapps/${projectName}.war">  </p><p>        </delete>  </p><p>        <delete dir="${tomcat.home}/webapps/${projectName}">  </p><p>        </delete>  </p><p>    </target>  </p><p>  </p><p>    <!--startup-->  </p><p>    <target name="startup" depends="shutdown" description="========startuptomcat===========">  </p><p>        <copy file="${deployVersion.dir}/${deploy.time}/${projectName}.war" todir="${tomcat.home}/webapps" />  </p><p>        <sleep seconds="3"/>  </p><p>        <exec executable="${tomcat.home}/bin/startup.bat" failonerror="false">  </p><p>        </exec>  </p><p>    </target>  </p><p>  </p><p>    <!--autodeploy-->  </p><p>    <target name="autodeploy" depends="execute,startup">  </p><p>        <delete file="${temporary.dir}/${projectName}">  </p><p>        </delete>  </p><p>    </target>  </p><p></project>  </p><p> </p><p>
    3. </p>
    复制代码



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    前天 10:29
  • 签到天数: 71 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
     楼主| 发表于 2018-6-15 16:33:46 | 只看该作者
    1. <p>[java] view plain copy</p><p><?xml version="1.0" encoding="UTF-8"?>  </p><p>    <project name="ear" default="deploy" basedir=".">  </p><p>     <property environment="env" />  </p><p>     <property name="projectName" value="svnant" />     </p><p>     <property name="temporary.dir" value="D:/SVNTest/${projectName}"/>  </p><p>  </p><p>     <property name="builder.dir" value="${temporary.dir}/builder" />  </p><p>     <property name="project.dir" value="${temporary.dir}/${projectName}" />    </p><p>          </p><p>     <property name="src.dir" value="${builder.dir}/src" />  </p><p>     <property name="WebRoot.dir" value="${builder.dir}/WebRoot" />  </p><p>     <property name="classes.dir" value="${WebRoot.dir}/WEB-INF/classes" />  </p><p>     <property name="lib.dir" value="${WebRoot.dir}/WEB-INF/lib" />  </p><p>          </p><p>     <path id="build.classpath" description="complie 's classpath">  </p><p>      <fileset dir="${temporary.dir}/${projectName}/WebRoot/WEB-INF/lib">  </p><p>       <include name="*.jar" />  </p><p>      </fileset>  </p><p>        <!-- junit jar -->  </p><p>         <fileset dir="E:\eclipse\plugins">  </p><p>           <include name="org.hamcrest.core_1.1.0.v20090501071000.jar" />  </p><p>          </fileset>  </p><p>          </p><p>         <fileset dir="E:\eclipse\plugins\org.junit_4.8.2.v4_8_2_v20110321-1705">  </p><p>           <include name="junit.jar" />  </p><p>          </fileset>  </p><p>          </p><p>      <pathelement location="${classes.dir}" />  </p><p>     </path>  </p><p>          </p><p>     <target name="copy-files" description="copy,java files">  </p><p>      <delete dir="${builder.dir}" />  </p><p>      <mkdir dir="${builder.dir}" />  </p><p>      <mkdir dir="${classes.dir}" />  </p><p>      <mkdir dir="${lib.dir}" />  </p><p>      <!--   </p><p>      <mkdir dir="${WebRoot.dir}/apps" />  </p><p>      -->  </p><p>      <mkdir dir="${src.dir}" />  </p><p>  </p><p>      <copy todir="${src.dir}" overwrite="YES">   </p><p>       <fileset dir="${project.dir}/src" />  </p><p>      </copy>  </p><p>  </p><p>      <copy todir="${WebRoot.dir}" overwrite="yes">  </p><p>       <fileset dir="${temporary.dir}/${projectName}/WebRoot" excludes=".svn" />  </p><p>      </copy>  </p><p>  </p><p>       </p><p>     </target>  </p><p>  </p><p>     <!-- compile file to share lib -->  </p><p>     <target name="compile" depends="copy-files">  </p><p>      <mkdir dir="${classes.dir}" />  </p><p>          </p><p>          </p><p>      <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="500m" srcdir="${src.dir}" destdir="${classes.dir}" includes="**" encoding="UTF-8" debug="true">  </p><p>       <classpath refid="build.classpath" />  </p><p>      </javac>  </p><p>      <copy todir="${classes.dir}">  </p><p>       <fileset dir="${src.dir}" excludes="**/*.java" />  </p><p>      </copy>  </p><p>        <!-- resources -->      </p><p>        <copy todir="${classes.dir}">  </p><p>           <fileset dir="${temporary.dir}/${projectName}/config"/>  </p><p>        </copy>  </p><p>     </target>  </p><p>  </p><p>     <!-- create the war  -->  </p><p>     <target name="web-war" depends="compile" description="create war">  </p><p>          </p><p>          </p><p>          </p><p>      <war destfile="${builder.dir}/../${projectName}.war" webxml="${WebRoot.dir}/WEB-INF/web.xml">  </p><p>       <fileset dir="${WebRoot.dir}">  </p><p>       </fileset>  </p><p>      </war>  </p><p>     </target>  </p><p>  </p><p>     <!-- create the ear   -->  </p><p>     <target name="ear" depends="web-war" description="create ear">  </p><p>     <!--  </p><p>      <ear destfile="${builder.dir}/../${projectName}.ear"   </p><p>        appxml="${basedir}/META-INF/META-INF/application.xml"   </p><p>        duplicate="preserve">  </p><p>       <fileset dir="${basedir}/META-INF" includes="**/*.*" />  </p><p>       <fileset dir="${builder.dir}/..">  </p><p>        <include name="${projectName}.war" />  </p><p>       </fileset>  </p><p>      </ear>  </p><p>      -->  </p><p>     </target>  </p><p>      </p><p>     <target name="deploy" depends="ear">  </p><p>      <echo>+ ===================================================== +</echo>  </p><p>      <echo>+                                                       +</echo>  </p><p>      <echo>+  Building Complete, Cleaning Temporary Files......    +</echo>  </p><p>      <echo>+                                                       +</echo>  </p><p>      <echo>+ ===================================================== +</echo>  </p><p>      <delete dir="${builder.dir}">  </p><p>      </delete>  </p><p>     </target>  </p><p>  </p><p>    </project>   </p><p>
    2. </p><p>bat :</p><p>
    3. </p><p>[java] view plain copy</p><p>@echo off  </p><p>del deploy.log  </p><p>call ant -f ./deploy.xml -debug -l deploy.log  </p>
    复制代码


    start  deploy.log  

    OK ,搞定!

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2018-6-17 11:45:52 | 只看该作者
    虽然现在还看不懂,但是觉得应该很牛逼
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-8 07:34 , Processed in 0.078350 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表