在项目开发的后期阶段,需要频繁将项目打包出来进行测试。因为测试和开发同步,这样一来就遇到一个问题:时间长了记不清测试的是哪一个版本。如果在打包的同时能把当时的版本信息同时记录下来就好了。

今天就为了这样一个问题折腾了半天,好在最后解决了问题。在这里记录一下,方便后来人的使用。

现有环境: eclipse + subversive
解决问题需要安装的软件: subversion的客户端
参考资源: http://ccollins.wordpress.com/2008/10/19/getting-subversion-revision-in-ant-part-ii/

在build.xml里添加如下target,蓝色字体的地方需要做本地替换,然后在打包前执行该target即可,最后的版本信息会写入Version.txt文件里。

 <!-- used for read out the subversion info -->
 <target name="find_revision" description="Sets property 'svn.info.lastRev' to head svn revision">
      
       <!-- Replace svn_client with values appropriate to your system -->
       <property name="libs" value="C:/svn_client/lib" />
       <path id="svnant.libs.path">
           <fileset dir="${libs}">
               <include name="svnant.jar" />
               <include name="svnClientAdapter.jar" />
           </fileset>
       </path>

       <!-- Load SvnAnt -->
       <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.libs.path" />

       <!-- find head revision number, amongst other things. -->
       <!-- Replace svn_username and svn_password with values appropriate to your system -->
       <svn username="svn_username" password="svn_password" javahl="false">
           <info target="." />
       </svn>

       <!-- Display and write svn revision number into file-->
       <echo file="C:/Version.txt">Revision found: ${svn.info.lastRev}</echo>
   </target>