ant学习之集成svn

今天想通过ant任务从svn中下载文件,由于build.xml想在任意一台机器上随意使用,所以在每台机器上都按照svn不太实际,今天查了下资料,发现可以通过javahl或者svnkit来执行,下面对ant集成svn的方式进行介绍。本文主要参考http://blog.csdn.net/zh2qiang/article/details/6795823

准备:
1、下载svnant-1.3.1,然后将其lib目录下的jar文件拷贝到ant的lib下,或者自己的目录(在build.xml文件中指定这些jar文件的路径即可),主要包括svnant.jar、svnClientAdapter.jar、svnjavahl.jar、svnkit.jar
2、下载svnkit-1.8.1,将其lib目录下的svnkit-javahl16-1.8.1.jar拷贝到svnkit.jar的目录(也可下载其它版本,这里用到的主要是svnkit-javahl16-1.8.1.jar这个文件)
该包及svnkit.jar包用于svnkit方式
3、下载libsvnjavahl-1.dll,放到svnant.jar的目录或者C:\WINDOWS\system32目录下
此文件及svnjavah.jra用于javahl方式

方式一:commandline方式,需要安装svn客户端。buid.xml文件如下:
<?xml version="1.0"?>  
<project name="svn-test" basedir="." default="run">  
    <property file="build.properties" />  
    <path id="path.svnant">    
       <pathelement location="${svnant.jar}" />  
       <pathelement location="${svnClientAdapter.jar}" /> 
    </path>    
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/> 
  <svnSetting id="svn.setting" svnkit="false" javahl="false" username="${svnant.repository.user}" password="${svnant.repository.passwd}" /> 
  
  <target name="checkoutLatest">  
      <svn refid="svn.setting">  
         <!--checkout url="http://svn.apusic.net/aesb/cluster/trunk/src/engine/apusic-esb-test-server/anttool/product-config" revision="HEAD" destPath="${basedir}/config/" />
         -->
       <export srcUrl="http://svn.apusic.net/aesb/cluster/trunk/src/engine/apusic-esb-test-server/anttool/product-config/dirs" revision="HEAD" destpath="${basedir}/config/" /> 
      
      </svn>  
  </target>   
</project> 

依赖Jar包:svnant.jar,svnClientAdapter.jar

方式二: javahl方式
该方式需要libsvnjavahl-1.dll,将该文件放到C:\WINDOWS\system32目录下或者svnant.jar同目录。buid.xml文件如下:
<?xml version="1.0"?>  
<project name="svn-test" basedir="." default="run">  
  <property file="build.properties" />   
  <path id="project.classpath">  
      <pathelement location="${svnjavahl.jar}" />  
      <pathelement location="${svnant.jar}" />  
      <pathelement location="${svnClientAdapter.jar}" /> 
  </path>   
  <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="project.classpath"/>
  <svnSetting id="svn.setting" svnkit="false" javahl="true" username="${svnant.repository.user}" password="${svnant.repository.passwd}" /> 
  
  <target name="checkoutLatest">  
      <svn refid="svn.setting">  
         <checkout url="http://svn.apusic.net/aesb/cluster/trunk/src/engine/apusic-esb-test-server/anttool/product-config" revision="HEAD" destPath="${basedir}/product-config/" />
      </svn>  
  </target>   
</project>

依赖Jar包:svnant.jar,svnClientAdapter.jar,svnjavahl.jar。
可能出现的异常:Missing 'javahl' dependencies on the classpath !,原因缺少libsvnjavahl-1.dll文件
本人试验时无论将libsvnjavahl-1.dll放到哪里,均无法正确执行下载任务,暂时未找到原因

方式三:svnkit方式
build.xml文件如下:
<?xml version="1.0"?>  
<project name="svn-test" basedir="." default="run">  
  <property file="build.properties" />
  <path id="project.classpath">   
    <pathelement location="${svnant.jar}" />  
    <pathelement location="${svnClientAdapter.jar}" /> 
    <pathelement location="${svnkit.jar}" /> 
    <pathelement location="${svnkitjavahl.jar}" /> 
  </path>       
  <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="project.classpath"/>
  <svnSetting id="svn.setting" svnkit="true" javahl="false" username="${svnant.repository.user}" password="${svnant.repository.passwd}" /> 
  
  <target name="checkoutLatest">  
      <svn refid="svn.setting">  
         <checkout url="http://svn.apusic.net/aesb/cluster/trunk/src/engine/apusic-esb-test-server/anttool/product-config" revision="HEAD" destPath="${basedir}/product-config/" />
         <!--<export srcUrl="http://svn.apusic.net/aesb/cluster/trunk/src/engine/apusic-esb-test-server/anttool/product-config" revision="HEAD" destpath="${basedir}/product-config/" /> -->
      </svn>  
  </target>   
</project>  

依赖Jar包:svnant.jar,svnClientAdapter.jar,svnkit.jar,svnkit-javahl.jar
可能出现的异常:Missing 'svnkit' dependencies on the classpath !,原因缺少svnkit-javahl.jar文件

猜你喜欢

转载自lucizhang.iteye.com/blog/1991373
今日推荐