ANT includesfile 标签的内容模式匹配
2016-11-14 17:28
330 查看
在弄SVN log增量打更新包的ANT配置,遇到这个坑,特此记录 。
现象:log文件处理出来文件列表了,但是打成更新包后发现,只有 class 文件打进去了,其他所有文件(jsp,css,js,img)等都打不进去。同时,提供的文件列表上记录的文件路径名称确定正确。
SVN 处理后:
错误的文件列表样例:
/WEB-INF/classes/com/onegrid/darj/web/action/DossierTabledataAction*.class
/main/fullSearchGroups.jsp
正确的文件列表样例:
/WEB-INF/classes/com/onegrid/darj/web/action/DossierTabledataAction*.class
/main/fullSearchGroups.jsp*
大家都知道,java因为可能有内部类的问题,所以class文件可能有Test$1.class 这种样子的,故而,读取文件时,使用模式星号(*)匹配是可以理解并想到的。
但是为什么读取jsp等文件,最后也要加个星号才能读取呢?其实我也不知道为什么,起先也很难想到这个问题上,所以我只能说,ANT神经病呗。
那么,它既然神经病了,但我们还要用,那只能满足这种星号匹配的要求啦。咱是要用,不能和神经病抬杠。
那么,问题来了:怎么满足最后多个星号呢?其实很简单,给log处理替换表达式,目标量最后加个星号就行了。
附上我的ANT.xml
再次提醒,注意点:第二个处理svn log 的正则表达式 expression="/\1*" ! 这个1后面的星号(*)。
好了,还不知道怎么用SVN Log抽增量更新包的小伙伴,请去别人家看。地址如下:
http://www.cnblogs.com/stay-9527/p/3996025.html
现象:log文件处理出来文件列表了,但是打成更新包后发现,只有 class 文件打进去了,其他所有文件(jsp,css,js,img)等都打不进去。同时,提供的文件列表上记录的文件路径名称确定正确。
SVN 处理后:
错误的文件列表样例:
/WEB-INF/classes/com/onegrid/darj/web/action/DossierTabledataAction*.class
/main/fullSearchGroups.jsp
正确的文件列表样例:
/WEB-INF/classes/com/onegrid/darj/web/action/DossierTabledataAction*.class
/main/fullSearchGroups.jsp*
大家都知道,java因为可能有内部类的问题,所以class文件可能有Test$1.class 这种样子的,故而,读取文件时,使用模式星号(*)匹配是可以理解并想到的。
但是为什么读取jsp等文件,最后也要加个星号才能读取呢?其实我也不知道为什么,起先也很难想到这个问题上,所以我只能说,ANT神经病呗。
那么,它既然神经病了,但我们还要用,那只能满足这种星号匹配的要求啦。咱是要用,不能和神经病抬杠。
那么,问题来了:怎么满足最后多个星号呢?其实很简单,给log处理替换表达式,目标量最后加个星号就行了。
附上我的ANT.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="project" default="patch_without_compile"> <!-- TLBADX 项目 --> <property name="project.name" value="cqdx" /> <tstamp> <format property="date.today" pattern="yyyyMMdd" /> </tstamp> <!-- svn提交change日志 --> <property name="change.log" value="C:/Users/Administrator/Desktop/changeLog.txt" /> <!-- 补丁包所在目录 --> <property name="build.dir" value="C:/Users/Administrator/Desktop/release" /> <!-- tomcat 下编译好的本项目根目录 --> <property name="tomcat.porject.dir" value="E:/tom/webapps/darj-v2.0/" /> <!-- 读取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="/WEB-INF/classes/\1*.class" /> </replaceregexp> <!-- 替换掉WebRoot/前面的路径 主要针对提交.js .css 等图片页面文件 --> <replaceregexp file="${patch.includesfile}" byline="true"> <!-- (?=X) 从句子前面读取 如果X前面为空直接略过。 前面不为空的执行替换操作 --> <regexp pattern="^/.+/(?:WebRoot)/(.+)$" /> <substitution expression="/\1*" /> </replaceregexp> </target> <!-- - - - - - - - - - target:package - - - - - - - - - --> <target name="package" description="补丁包"> <delete file="${build.dir}/${dest.zip}" /> <zip destfile="${build.dir}/${dest.zip}" baseDir="${tomcat.porject.dir}" compress="true" includesfile="${patch.includesfile}" /> </target> <!-- - - - - - - - - - target:release without compile - - - - - - - - - --> <target name="patch_without_compile" depends="patchfile, package" description="go 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>
再次提醒,注意点:第二个处理svn log 的正则表达式 expression="/\1*" ! 这个1后面的星号(*)。
好了,还不知道怎么用SVN Log抽增量更新包的小伙伴,请去别人家看。地址如下:
http://www.cnblogs.com/stay-9527/p/3996025.html
相关文章推荐
- 清除input标签中type="file" 的内容
- 匹配得到A标签href的内容
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 正则表达式的贪婪模式和非贪婪模式,如何取div ,li 标签的循环内容,采集别人网站的内容
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 正则匹配抓取input 隐藏输入项和 <td>标签内的内容
- IE下面解决安全限制而无法接收隐藏file标签提交的内容。
- 正则匹配内容为空的HTML标签
- 微博内容正则表达式匹配链接, 话题标签与@用户
- ASP.NET - 匹配标签中的内容
- [Ant][StartWithAnt] 第五章 条件判断Contidion 4.文件内容匹配 5.特性(property)存在性判断
- file标签之act=read(只需一行代码读出文件内容)
- 正则表达式匹配一段标签内容
- 微博内容正则表达式匹配链接, 话题标签与@用户
- 微博内容正则表达式匹配链接, 话题标签与@用户