使用SvnAnt结合svn进行项目构建

使用ant可以进行项目构建,而在svn环境下进行项目自动构建则需要使用svnant来对源码进行操作。本例以从svn服务器上签出代码,在本地编译、执行为例说明svnant的操作。要执行以上操作,需要安装ant、带命令行的svn客户端和svnant。使用TortoiseSVN不可以,因为他没有svn可执行文件。

建立的build.xml文件如下:

  1. <?xml version="1.0"?> 
  2. <!-- Sample build file used to retrieve svnant's sources --> 
  3. <project name="svn-test" basedir="."default="run"> 
  4.    
  5.   <!--  all properties are in build.properties --> 
  6.   <propertyfilepropertyfile="build.properties" /> 
  7.    
  8.   <!-- path to the svnantlibraries. Usually they will be located in ANT_HOME/lib --> 
  9.   <path id="project.classpath"> 
  10.     <pathelementlocationpathelementlocation="${svnjavahl.jar}" /> 
  11.     <pathelementlocationpathelementlocation="${svnant.jar}" /> 
  12.     <pathelementlocationpathelementlocation="${svnClientAdapter.jar}" /> 
  13.   </path>   
  14.    
  15.   <!-- load the svn task--> 
  16.   <taskdefresourcetaskdefresource="svntask.properties" classpathref="project.classpath"/> 
  17.          <targetnametargetname="delete" depends="checkoutLatest"> 
  18.                   <deletedirdeletedir="bin" includes="*"/> 
  19.                   <deletedirdeletedir="output" includes="*"/> 
  20.          </target> 
  21.          <targetnametargetname="compile" depends="delete"> 
  22.                   <javacdestdirjavacdestdir="bin" srcdir="src" includeantruntime="on"/> 
  23.          </target> 
  24.          
  25.          <targetnametargetname="jar" depends="compile"> 
  26.                   <jardestfilejardestfile="output/hello.jar" basedir="bin"/> 
  27.          </target> 
  28.    
  29.          <targetnametargetname="run" depends="jar"> 
  30.                   <javadirjavadir="bin" classname="hello" classpath="bin"/> 
  31.          </target> 
  32.   <targetnametargetname="checkoutLatest"> 
  33.     <svnusernamesvnusername="${svnant.repository.user}"password="${svnant.repository.passwd}"> 
  34.       <checkouturlcheckouturl="${svnant.latest.url}" revision="HEAD"destPath="." /> 
  35.     </svn> 
  36.   </target> 
  37. </project> 

 

可以看出,上述文件最先开始执行checkout命令,从资源库中检出新的代码,随后执行删除命令,清除了output和bin文件夹中的内容,随后执行编译、打包命令,最后执行上述代码生成的最新结果。执行结果为:

使用SvnAnt结合svn进行项目构建

以上代码引入了一个配置文件build.properties,其内容如下:

  1. svnant.version=1.0.0 
  2. lib.dir=lib 
  3. svnant.jar=${lib.dir}/svnant.jar 
  4. svnClientAdapter.jar=${lib.dir}/svnClientAdapter.jar 
  5. svnjavahl.jar=${lib.dir}/svnjavahl.jar 
  6.    
  7. svnant.latest.url=svn://192.168.195.54/hello/ 
  8.    
  9. svnant.repository.user=gongqingkui 
  10. svnant.repository.passwd="123"

上述文件定义了连接到SVN服务器的用户名密码和地址信息。

使用以上配置,再加上自动执行脚本,可以执行每日构建等工作。

Ps:在检出代码时,如果提示Cannot use javahl nor command line svn client,那么可能是因为没有svn可执行文件,或者javahl.jar文件导致。一般安装带命令行的svn客户端,或者将svnant下的javahl.jar拷贝到antd的lib下。本例中安装了subversion的服务器,他其中带有svn的可执行客户端。

svn

相关推荐