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,把本身從重複工做中解脫出來。
相關文章
相關標籤/搜索