根据Eclipse SVN changelog使用ANT自动打增量包

1、获取changeLog

  用eclipseSVN的插件功能查看history。

  

  将日志文件导出到本地文件svn_change.log,格式如下

  

r63 | xiaodaoshi | 2014-08-08 18:01:36 CST
Changed paths:
    M /root/Testproject/ANT_DEMO/demo/src/com/csdn/common/util/StringUtil.java
    M /root/Testproject/ANT_DEMO/demo/src/com/csdn/service/First.java
    A /root/Testproject/ANT_DEMO/demo/src/com/csdn/service/Second.java
    M /root/Testproject/ANT_DEMO/demo/src/com/csdn/service/Third.java
    M /root/Testproject/ANT_DEMO/demo/webapps/demo/welcome/welcome.jsp
    M /root/Testproject/ANT_DEMO/demo/webapps/demo/images/welcome.png

<description>测试</description>
xds9527

----------------------------------------------------------------------------

2、ANT脚本的编写,基本原理是读取changeLog.txt,首先过滤将注释,提交人..等等不需要的信息过滤掉。导入到新文件patch.log。在读取此文件根据正则表达式处理没效的目录,在替换成真实编译后的classes目录。将.java替换成*.class后缀。*是为了通配符。匹配内部类。如何根据文件复制到新目录下。在根据此打包。就基本完成功能了。

  无效信息过滤后文件内容

webapps/demo/WEB-INF/classes/com/csdn/common/util/StringUtil*.class
webapps/demo/WEB-INF/classes/com/csdn/service/First*.class
webapps/demo/WEB-INF/classes/com/csdn/service/Second*.class
webapps/demo/WEB-INF/classes/com/csdn/service/Third*.class
webapps/demo/welcome/welcome.jsp
webapps/demo/images/welcome.png

下面是完整的ANT脚本

<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="patch_without_compile">
    <!-- TLBADX 项目 -->
    <property name="project.name" value="demo" />
    <tstamp><format property="date.today" pattern="yyyyMMdd" /></tstamp>
    <!-- svn提交change日志 -->
    <property name="change.log" value="./changeLog.txt" />
    <!-- 补丁包所在目录 -->
    <property name="build.dir" value="./release" />
    <!-- 读取svn日志提取出新增和修改文件 获取补丁包包含的文件 -->
    <property name="patch.includesfile" value="${build.dir}/patchfiles.txt" />
    <!-- 补丁包名称 -->
    <property name="dest.zip" value="${project.name}_${date.today}_patch.zip" />

    <!-- - - - - - - - - - target:从svn日志中,取出checkin文件 - - - - - - - - - -->
    <target name="patchfile" depends="init" description="处理 svn_changge 日志 ">
        <!-- 去掉 SVN日志中的注释,只保留Added和Modified记录 -->
        <concat destfile="${patch.includesfile}" append="false" force="true">
            <fileset file="${change.log}" />
            <filterchain>
                <containsregex byline="true" pattern="^([\s]+)(?:A|M)([\s]+)(.+)$" replace="\3" />
            </filterchain>
        </concat>

        <!-- 将src目录替换为classes目录 主要针对提交的代码 -->
        <replaceregexp file="${patch.includesfile}" byline="true">
            <!-- (?:X) X作为非捕获组 相当于java的group概念 提取出代码的相对路径 -->
            <regexp pattern="^/.+/(?:src)/(.+)\..+$" />
            <substitution expression="webapps/toolbar/WEB-INF/classes/\1*.class" />
        </replaceregexp>
        <!-- 替换掉WebRoot/前面的路径 主要针对提交.js .css 等图片页面文件 -->
        <replaceregexp file="${patch.includesfile}" byline="true">
            <!-- (?=X) 从句子前面读取 如果X前面为空直接略过。 前面不为空的执行替换操作 -->
            <regexp pattern="^/.+/(?=webapps/)" />
            <substitution expression="" />
        </replaceregexp>
    </target>

    <!-- - - - - - - - - - target:package - - - - - - - - - -->
    <target name="package" description="补丁包">
        <delete dir="${build.dir}/webapps" />
        <copy todir="${build.dir}" overwrite="true">
            <fileset dir="." includesfile="${patch.includesfile}" />
        </copy>

        <delete file="${build.dir}/${dest.zip}" />
        <zip destfile="${build.dir}/${dest.zip}" compress="true">
            <zipfileset prefix="webapps" dir="${build.dir}/webapps">
                <include name="**" />
            </zipfileset>
        </zip>
    </target>

    <!-- - - - - - - - - - target:release without compile - - - - - - - - - -->
    <target name="patch_without_compile" depends="patchfile, package" description="--> release">
        <echo>补丁包打包结束</echo>
    </target>

    <!-- - - - - - - - - -target: init - - - - - - - - - -->
    <target name="init" depends="clean">
        <mkdir dir="${build.dir}"/>
    </target>
    <!-- - - - - - - - - -target: clean - - - - - - - - - -->
    <target name="clean">
        <delete dir="${build.dir}" />
    </target>

</project>

这样的话获取版本changeLog.txt,执行ANT脚本。在release目录下就会生成补丁包了。

时间: 2024-10-10 01:13:37

根据Eclipse SVN changelog使用ANT自动打增量包的相关文章

Jenkins系列之-—10 实现自动打增量包

思路 1. 进入服务对应的jenkins job build路径下 SVN diff 命令抓取一段时间内变化日志----输出到patch.txt 2 svn全路径替换为相对项目的文件路径 3. 根据pathch.txt,生成class文件清单patch_class.txt3.1 编译路径替换 3.2 追加匿名内部类-----patch_class.txt 4. cp文件对对应路径 5. 打包 参考资料 原文地址:https://www.cnblogs.com/liuyitan/p/1219151

ant+svn+tomcat实现项目自动部署

因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html jar包需要eclipse的jar和svn的部分jar,已整理好,直接放入ant中lib下即可. 除ant外其他所需jar包 下载地址:http://files.cnblogs.com/files/haha12/%E9%99%A4ant%E5%A4%96%E5%85%B6%E4%BB%96%E6%89%80%E9

Ant自动打包

Ant使用 在ant的官网http://ant.apache.org进行下载后apache-ant-1.8.2包 解压(存放的路径不要有中文字符) 把ant里的lib设置到环境变量:E:\Android\apache-ant-1.8.2\lib 这样在命令行里就可以直接使用ant 学习资料:1.  ant使用指南.rar 2. 文档:apache-ant-1.8.2/docs/manual/index.html下的Ant Tasks à List of Tasks Ant的For循环 在ant的

Windows系统下Ant自动编译打包并签名Android应用——实践篇

1.背景 项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦.于是想起了之前探索过的Ant自动签名打包.查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用--探索篇,边动手边复习.但是后面遇到了一大串的问题... 2.问题解决过程 1).libs库中的第三方包 如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题. 2).

Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用aapt命令生成R.java文件 2.用aidl命令生成相应java文件 3.用javac命令编译java源文件生成class文件 4.用dx.bat将class文件转换成classes.dex文件 5.用aapt命令生成资源包文件resources.ap_ 6.用apkbuilder.bat打包资源

如何在Eclipse下,实现ant的web项目修改保存后,实时部署,直接刷新即可看到结果

最近碰到了一个老项目,是ant的web项目,把项目导入到Eclipse以后,发现修改了文件之后,要先执行build.xml,再把打包好的war丢到Tomcat下,再刷新才能看到效果.由于以前没用过ant,所以自己研究了一套办法(如果ant确实有像Eclipse下修改后直接刷新就可看到结果的方法,还望众客官不吝赐教). 本项目参考了以下4个帖子: 帖子1:  http://blog.csdn.net/futurelight/article/details/624950 帖子2: http://we

ANT自动打包U3D安卓项目研究笔记

概述 因项目使用Atlassian Stash作为项目源码管理端,且其支持Ant命令自动编译,可使其根据最新的代码自动打包,故产生该研究Ant打包的任务.在此将研究过程及一些相关知识整理记录在此. 本文部分内容可以说就是Android和Ant自动打包的配置,只是在其基础上扩充了Unity3D的部分. 阅读本文需要:知道Android开发环境大概需要哪些东西,知道Unity3D编辑器的基本使用方法. 本文并不是系统学习Ant以及Android自动打包的文章,只是笔者通过网络搜索一系列文章,然后通过

eclipse svn分支与合并操作

以前做项目的时候没有用过svn的分支合并操作,今天用到了,刚开始还真不会啊.最后查了下就是这么的方便.专门记录下来. 原文来自:http://blog.csdn.net/lisq037/article/details/17501327 还可以参考如下几篇文章 http://toptree.iteye.com/blog/1143328 http://www.cnblogs.com/wenlong/archive/2012/05/07/2586853.html 要在svn主干上创建分支,用分支来进行

Ant自动编译打包&amp;发布 android项目

Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. 1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Program Files\apache-ant-1.9.3) ,然后配