SvnAnt是一个用来与Subversion版本控制系统进行交互的一个Ant扩展,利用它可以在Ant任务中对 SVN进行操作。利用SvnAnt对SVN进行操作有以下三种方式:
1. commandline方式这种方式需要安装Subversion。buid.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>依赖Jar包:svnant.jar,svnClientAdapter.jar
<project basedir="." name="cowork" default="svncheckout">
<property name="destPath" value="${basedir}" />
<property name="svnurl" value="http://svn.xxx.com/xxx" />
<property name="svn.username" value="username" />
<property name="svn.password" value="password" />
<path id="path.svnant">
<fileset dir="${basedir}">
<include name="**/*.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
<target name="svncheckout" >
<svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="false"/>
<svn refid="svnparams">
<checkout url="${svnurl}" destPath="${destPath}" />
</svn>
</target>
</project>
2. javahl方式
这种方式需要libsvnjavahl-1.dll,将该文件放到C:\WINDOWS\system32目录下。buid.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>依赖Jar包:svnant.jar,svnClientAdapter.jar,svnjavahl.jar。
<project basedir="." name="cowork" default="svncheckout">
<property name="destPath" value="${basedir}" />
<property name="svnurl" value="http://svn.xxx.com/xxx" />
<property name="svn.username" value="username" />
<property name="svn.password" value="password" />
<path id="path.svnant">
<fileset dir="${basedir}">
<include name="**/*.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
<target name="svncheckout" >
<svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="true"/>
<svn refid="svnparams">
<checkout url="${svnurl}" destPath="${destPath}" />
</svn>
</target>
</project>
可能出现的异常:Missing 'javahl' dependencies on the classpath !,原因缺少libsvnjavahl-1.dll文件
说明:libsvnjavahl-1.dll文件也可以和svnant.jar文件放到一起
3. svnkit方式
build.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>依赖Jar包:svnant.jar,svnClientAdapter.jar,svnkit.jar,svnkit-javahl.jar
<!-- binding svnkit -->
<project basedir="." name="cowork" default="svncheckout">
<property name="destPath" value="${basedir}" />
<property name="svnurl" value="http://svn.xxx.com/xxx" />
<property name="svn.username" value="username" />
<property name="svn.password" value="password" />
<path id="path.svnant">
<fileset dir="${basedir}">
<include name="**/*.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
<target name="svncheckout" >
<svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="false" svnkit="true"/>
<svn refid="svnparams">
<checkout url="${svnurl}" destPath="${destPath}" />
</svn>
</target>
</project>
可能出现的异常:Missing 'svnkit' dependencies on the classpath !,原因缺少svnkit-javahl.jar文件
综上所述,三种方式均依赖svnant.jar和svnClientAdapter.jar;其中svnant.jar定义了Ant任务及与SVN交互的接口,它通过svnClientAdapter.jar适配以上三张交互方式。三种方式的主要区别如下:
|
依赖对象 |
参数 |
comandline |
安装Subversion, svnant.jar,svnClientAdapter.jar |
javahl="false" |
javahl |
libsvnjavahl-1.dll, svnant.jar,svnClientAdapter.jar,svnjavahl.jar |
javahl="true" |
svnkit |
svnant.jar,svnClientAdapter.jar,svnkit.jar, svnkit-javahl.jar |
javahl="false", svnkit="true" |
资源下载:
1. 下载svnant压缩包,获取svnant.jar,svnClientAdapter.jar,svnjavahl.jar,svnkit.jar
2. 下载svn的eclipse插件包,从中获取libsvnjavahl-1.dll
3. 下载svnkit压缩包,获取svnkit-javahl.jar