ANT集成SVNANT访问SVN(Subversion)

一直想让项目的编译自动化,由于代码服务器使用的是SVN,同时脚本用的是ANT,就涉及到如何在ANT中来访问SVN,checkout/commit/update/export 等。
 
  在网上查了很多资料,发现都没有介绍原理,只是生搬硬套,很容易搞错,却不知错在哪里。通过研究ANT,SVN,SVNANT等几方面的原始英文文档,这里准备详细说明一下。
   首先,说一下我的配置:
ANT ,1.8.4
SVN, 1.7.8
SVNANT:1.3.1 ,
时间:2012.12.22(传说中的玛雅人预测的世界末日)。
  ANT 想要和SVN集成到一起,其实至少有以下三种方案:
方案一:直接利用ANT 的命令 <exec> 来完成。
        需要注意的是,这需要在运行ANT的机器上安装SVN,同时,此种方式严重依赖操作系统。
        下面以WINDOWS为例。
<?xml version="1.0" encoding="UTF-8"?>
<project name="test">
   <property name="svn-url" value="svn://localhost"></property>
   <target name="hello">
      <echo message="hello ant!"></echo>
      <exec executable="svn" > //<!-- 直接调用 svn.exe,注意svn.exe要能够通过path访问到-->
       <arg line="co ${svn-url}/test1/src test2/src"/> <!-- 设置svn 的命令行参数 -->
      </exec>

   </target>
</project>
     怎么样,还是挺简单吧?!
方案二:利用SVNANT中的SVNKIT
 
 注意:本方案和方案三都需要把SVNANT解压后的所有JAR包都放入ANT\LIB目录下,方便查找使用。

<?xml version="1.0" encoding="UTF-8"?>
<project name="test">
   <property name="svn-url" value="svn://localhost"></property>
   <property name="basedir" value="d:/apache-ant-1.8.2/lib"></property>
   <path id="path.svnant">  <!-- 定义一个PATH元素,告诉ANT 到哪找SVNANT的类库 -->
       <pathelement location="${basedir}/svnant.jar"/> <!-- SVNANT顶层包-->
       <pathelement location="${basedir}/svnClientAdapter.jar"/>
<!-- SVNANT 与SVN通讯的适配器包-->       <pathelement location="${basedir}/svnjavahl.jar"/> <!-- SVNANT与SVN 通讯的JAVA BRIDGE包-->       
       <!-- ... -->
   </path>
   
   <typedef
       resource="org/tigris/subversion/svnant/svnantlib.xml"
       classpathref="path.svnant"
    /> 
<!--引用 svnantlib.xml ,其中定义了ANT的SVN命令,见下方详解。-->
    <svnSetting id="svn.settings" 
<!--定义svnSetting ,新的设置SVN属性方式-->      
      svnkit="true"  <!-- 通过SVNKIT模式(即设置为TRUE),而不是JAVAHL模式-->
       javahl="false"

       username=""
       password=""
    />
 

   <target name="hello">
      <echo message="hello ant!"></echo>
      <svn refid="svn.settings"
<!--引用上面定义的svnSetting ,新的设置SVN属性方式-->
         <checkout recurse="true" url="${svn-url}/test1/src" destPath="test2/src" /> <!-- 执行checkout 命令-->
       
      </svn>
      <echo message="success!"></echo>
   
   </target>

</project>


方案三:利用SVNANT中的JAVAHL

<?xml version="1.0" encoding="UTF-8"?>
<project name="test">
   <property name="svn-url" value="svn://localhost"></property>
   <property name="basedir" value="d:/apache-ant-1.8.2/lib"></property>
   <path id="path.svnant">
       <pathelement location="${basedir}/svnant.jar"/>
       <pathelement location="${basedir}/svnClientAdapter.jar"/>
       <pathelement location="${basedir}/svnjavahl.jar"/>
       
       <!-- ... -->
   </path>
   
   <typedef
       resource="org/tigris/subversion/svnant/svnantlib.xml"
       classpathref="path.svnant"
    />
    <svnSetting id="svn.settings"
       svnkit="false"
       javahl="trues"
<!-- 通过JAVAHL模式(即设置为TRUE),而不是SVNKIT模式-->
       username=""
       password=""
    />
 

   <target name="hello">
      <echo message="hello ant!"></echo>
      <svn refid="svn.settings">
         <checkout recurse="true" url="${svn-url}/test1/src" destPath="test3/src" />
       
      </svn>
      <echo message="success!"></echo>
   
   </target>

</project>

怎么样,还算简单吧?希望各位能够轻松应用ANT,把自己从重复工作中解脱出来。

你可能感兴趣的:(ant,SVN,svnkit,javahl,SVNANT)