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目录下就会生成补丁包了。

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

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

    因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html jar包需要e ...

  2. eclipse svn插件 设置自动加锁相关

    eclipse svn插件 设置自动加锁相关 Subclipse 1.10.9 发布,改进说明:SVNKit 1.8.8Exception proof repository sorter. (1616 ...

  3. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

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

    原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用a ...

  5. Andorid进阶7—— Ant自动编译打包&发布 android项目

    http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...

  6. Ant自动打包

    在ant的官网http://ant.apache.org进行下载后apache-ant-1.8.2包 解压(存放的路径不要有中文字符) 把ant里的lib设置到环境变量:E:\Android\apac ...

  7. eclipse svn分支与合并操作

    以前做项目的时候没有用过svn的分支合并操作,今天用到了,刚开始还真不会啊.最后查了下就是这么的方便.专门记录下来. 原文来自:http://blog.csdn.net/lisq037/article ...

  8. Eclipse SVN插件与TortoiseSVN的对应关系及下载链接

    Eclipse SVN 插件与TortoiseSVN对应关系 Eclipse 3.2/Callisto, 3.3/Europa, 3.4/Ganymede, 3.5/Galileo, 3.6/Heli ...

  9. Ant自动编译打包&发布 android项目

    Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...

随机推荐

  1. UVa753/POJ1087_A Plug for UNIX(网络流最大流)(小白书图论专题)

    解题报告 题意: n个插头m个设备k种转换器.求有多少设备无法插入. 思路: 定义源点和汇点,源点和设备相连,容量为1. 汇点和插头相连,容量也为1. 插头和设备相连,容量也为1. 可转换插头相连,容 ...

  2. MYSQL-用户权限的验证过程(转)

    知识点 因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host. 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 ...

  3. BZOJ 1901 Zju2112 Dynamic Rankings

    树阵主席设置树.维护间隔动态K大. .. ZOJ到空间太小,太大,仅仅能到BZOJ上交 1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memor ...

  4. poj2593 Max Sequence(两个不相交字段的最大总和与)

    转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=2593">http://poj.org/prob ...

  5. android之Fragment(官网资料翻译)

    Fragment要点 Fragment作为Activity界面的一部分组成出现 能够在一个Activity中同一时候出现多个Fragment,而且,一个Fragment亦可在多个Activity中使用 ...

  6. js json string 互转

    字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSON.pars ...

  7. 开始学习java

    .net 许久 看网络java猿飞计划,感觉成了少数类,学校为它,有多难不,有着vb,C,javascript和vs基金会,这并不是说一些语法和框架的熟悉做,搞两天,以一个开发环境,myeclipse ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ( ...

  9. StyleCop中有一些官方自己写好的检测规则下面就是英文的解释

    在StyleCop中有一些官方自己写好的检测规则下面就是英文的解释 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialEl ...

  10. 在面对变化,撇开NO

    参观后转到供应商,看到自己的生产线流水线半自己的钣金生产线举措.这就是我一直想厂提高生产现场的想法,因为通常当我看到工作人员努力工作和繁忙的生产,只见废现场,线解决方式时,有点莫名的兴奋. 幸亏是一家 ...