青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

教父的告白
一切都是紙老虎
posts - 82,  comments - 7,  trackbacks - 0
摘要:
  Subversion是越來越被廣泛使用的版本管理工具,使用Ant腳本從Subversion獲取代碼,實現Daily Build。
  1.Subversion概述
  先引用Version Control with Subversion 中開頭的話:
  “If C gives you enough rope to hang yourself, think of Subversion as a sort of rope storage facility.” 
   —Brian W. Fitzpatrick
  然后告訴大家CVS是舊愛,Subversion是新歡。列舉若干Subversion的特性和優勢為證,懶得寫了,直接看這里:Subversion的老家
  關于如何使用Subversion以及相關客戶端軟件,網上慢慢看吧,官方自由圖書不錯。
  2.螞蟻出場
  團隊最近的項目中即使用Subversion作為版本控制工具。Daily Build過兩天就得搭建起來了,上螞蟻!
  Tigris.org提供了Subclipse,SvnClientAdapter和SvnAnt。(見這里)
  Subclipse是一個Eclipse的插件,實現了IDE與Subversion得集成;
  SvnClientAdapter是Subversion的一套Java API,封裝了客戶端對Subversion的一些訪問操作;
  SvnAnt是用于訪問Subversion的Ant任務,其依賴于SvnClientAdapter。
  我要用的就是SvnAnt,用SVN Check Out一份SvnAnt的代碼:
   
   
   
   
   svn co http://subclipse.tigris.org/svn/subclipse/trunk/svnant/ svnant
   
   
   
   
  在這個工程里面還包括svnant的Ant Task使用說明文檔,也可以在這里直接查看。
  使用其中的build.xml編譯SvnAnt后,在新生成的build子目錄下會生成svnant.jar。按照官方文檔的說法,把這個svnant.jar和SvnAnt工程的lib目錄下的svnClientAdapter.jar和svnjavahl.jar拷貝到Ant的目錄下即可。然后編寫如下的Ant腳本進行測試:
   
   
   
   
   <?xml version="1.0"?>
   <project name="SVN Ant Test" default="checkout" basedir=".">
   <!-- 1 -->
   <property name="remote.url"
   value="svn://16.157.xxx.xxx/trunk/LNPORTAL/src/P3UIPAdapter/" />
   <property name="local.dir" value="local" /> 
   <!-- 2 -->
   <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" />
   <target name="prepare"
   description="Prepare the dirs for other tasks">
   <delete dir="${local.dir}" />
   <mkdir dir="${local.dir}" />
   </target>
   <!-- 3-->
   <target name="checkout" depends="prepare">
   <svn javahl="true" username="lihq" password="password" >
   <checkout url="${remote.url}" destPath="${local.dir}" />
   </svn>
   </target>
   </project>
   
   
   
   
  測試結果暫時不重要。
  3.JavaSVN出場
  SvnAnt的執行依賴SvnClientAdapter,而執行訪問SVN時又有兩種形式:其一是通過SVN 命令行程序的形式進行的(我在想:如果是這樣,還不如使用Ant的exec任務呢);其二是通過Javahl來執行的。
  Javahl是一個用于訪問Subversion的Java接口(估計是JNI),這需要Windows機上有svnjavahl.dll才行。團隊的Daily Build的并不是Windows,于是求助JavaSVN,這是一個純Java的SVN解決方案。
  請訪問這個Guide:Making SvnAnt use JavaSVN
  我的實際步驟如下:
  Step 1:從Ant的lib目錄下移除SvnClientAdapter.jar,我沒有發現javahl.jar,于是便移除了svnjavahl.jar,其實移不移后者無所謂;
  Step 2:在剛才那個頁面下載javasvn.jar和javasvn-javahl.jar,以及JavaSVN的svnClientAdapter-0.9.32.jar。并把這三個jar都拷貝到Ant的lib目錄下;
  然后運行上面寫的SVN Ant測試腳本,結果如下:
   
   
   
   …
   BUILD FAILED
   java.lang.AbstractMethodError: org.tigris.subversion.svnant.Feedback.logRevision(J)V
   
   Total time: 7 seconds
   
   
   
  雖然SVN的代碼都取下來了,但最后Ant會拋出一個如上的錯,這會使得Ant腳本無法運行后面的任務。
  4.Thanks Open Source
  看來,大概是JavaSVN用自己的svnClientAdapter-0.9.32.jar改變了SVNAnt本來對調用。SVNAnt(by Tigris.org)原先是調用svnjavahl.jar來運行SVN命令的。替換svnClientAdapter-0.9.32.jar后,SVNAnt(plus JavaSVN)是調用javasvn-javahl.jar和javasvn.jar來運行SVN命令的。上面那個錯誤大概就是兩套svnClientAdapter對某個抽象方法的定義不完全一致造成的,估計是API版本對應的問題。解決如下:
  首先查看svnant.jar的源代碼,發現org.tigris.subversion.svnant.Feedback是實現svnClientAdapter.jar中的一個名為ISVNNotifyListener的接口。這個接口中對報錯的logRevision方法的定義是:
   
   
   
   
   public abstract void logRevision(long revision, String path)
   
   
   
   
  而查看svnClientAdapter-0.9.32.jar中的ISVNNotifyListener的接口中的定義是:
   
   
   
   
   public abstract void logRevision(long revision)
   
   
   
   
  明顯不匹配,于是修改svnant.jar的源代碼,修改org.tigris.subversion.svnant.Feedback,象其中添加一個方法如下:
   
   
   
   
   //This method is added by Beegee
   public void logRevision(long revision) {
   }
   
   //This method is the original one by SVNANT
   public void logRevision(long revision, String path) {
   }
   
   
   
   
  然后重新編譯SVNAnt,生成svnant.jar,拷貝替換Ant 的lib目錄下的同名jar,重新運行以上SVN Ant測試腳本,結果如下:
  

  OK!
  -end-
posted on 2010-04-09 11:20 暗夜教父 閱讀(527) 評論(0)  編輯 收藏 引用 所屬分類: JAVA

<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品一二三| 亚洲二区视频在线| 亚洲香蕉网站| 亚洲视频电影在线| 亚洲欧美日韩国产中文| 亚洲男人影院| 久久精品视频在线看| 麻豆精品网站| 欧美日韩在线播放三区| 国产精品国产三级国产普通话三级 | 亚洲欧洲日产国产综合网| 久久久久亚洲综合| 亚洲国产成人不卡| 国产精品99久久不卡二区| 亚洲欧美国产高清| 欧美成人免费全部| 国产精品午夜av在线| 亚洲大片在线| 模特精品在线| 欧美久久久久久| 国产永久精品大片wwwapp| 亚洲精品你懂的| 久久综合狠狠综合久久综合88| 欧美激情一区三区| 欧美一区日韩一区| 国产精品成人aaaaa网站| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲视频在线观看网站| 美女精品网站| 久久久综合激的五月天| 国产午夜精品全部视频播放| 亚洲美女少妇无套啪啪呻吟| 农村妇女精品| 蜜桃视频一区| 亚洲精品乱码久久久久久蜜桃麻豆| 久久成人免费网| 亚洲欧美日本国产专区一区| 国产精品国产三级国产专播精品人 | 欧美高清自拍一区| 另类国产ts人妖高潮视频| 国产婷婷成人久久av免费高清| 亚洲欧美日韩国产综合精品二区| 亚洲丰满在线| 欧美揉bbbbb揉bbbbb| 亚洲天堂黄色| 久久疯狂做爰流白浆xx| 韩国一区二区三区在线观看| 你懂的国产精品| 国产精品yjizz| 美女网站在线免费欧美精品| 你懂的视频欧美| 欧美精品色一区二区三区| 99国产一区| 久久噜噜噜精品国产亚洲综合| 亚洲国产精品成人综合色在线婷婷| 亚洲国产精品专区久久| 国产精品网站一区| 亚洲精品久久久久久一区二区| 欧美精品一区在线| 蜜桃av一区二区在线观看| 欧美日韩另类视频| 欧美11—12娇小xxxx| 国产精品久久久久久久久久免费看 | 欧美日韩八区| 免费高清在线一区| 国产视频精品xxxx| 亚洲综合社区| 亚洲一区二区伦理| 欧美激情在线免费观看| 欧美 日韩 国产在线| 国产自产女人91一区在线观看| 亚洲靠逼com| 国产精品99久久久久久久久久久久| 久久香蕉国产线看观看网| 久久久www成人免费无遮挡大片| 欧美精品一区二区视频| 亚洲欧洲一区二区天堂久久| 亚洲风情亚aⅴ在线发布| 久久久久9999亚洲精品| 久久成人羞羞网站| 女仆av观看一区| 91久久久精品| 欧美日韩久久精品| 亚洲午夜性刺激影院| 午夜精品一区二区三区四区| 欧美日韩免费在线观看| 一本色道久久加勒比88综合| 亚洲自拍三区| 激情亚洲网站| 欧美日韩高清在线观看| 午夜一区二区三区在线观看| 欧美在线啊v| 亚洲精品精选| 国产在线拍偷自揄拍精品| 欧美激情自拍| 久久中文欧美| 亚洲欧美日韩另类精品一区二区三区| 久久狠狠亚洲综合| 亚洲伦理在线免费看| 黄色成人免费观看| 国产精品免费久久久久久| 免费人成精品欧美精品| 欧美亚洲视频在线观看| 99亚洲视频| 亚洲精品一区在线观看| 麻豆免费精品视频| 久久香蕉国产线看观看av| 亚洲女同精品视频| 一本久久a久久精品亚洲| 亚洲精品国产无天堂网2021| 一区二区在线观看视频在线观看| 国产精品视频观看| 国产日韩成人精品| 国产精品视频xxx| 国内精品一区二区三区| 国产亚洲欧洲997久久综合| 国产日韩欧美精品综合| 国产美女精品一区二区三区| 国产精品主播| 激情久久综合| 亚洲精品国产品国语在线app| 免费欧美网站| 欧美啪啪成人vr| 国产精品久久999| 国产曰批免费观看久久久| 伊人狠狠色丁香综合尤物| 亚洲国产另类 国产精品国产免费| 亚洲国产精品一区二区第一页| 亚洲第一视频网站| 亚洲午夜av在线| 男男成人高潮片免费网站| 日韩视频一区二区在线观看 | 亚洲人体一区| 亚洲视频播放| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧洲日本专区| 久久高清国产| 欧美揉bbbbb揉bbbbb| 黑人巨大精品欧美黑白配亚洲| 一区二区欧美日韩| 欧美不卡视频一区| 欧美在线视频不卡| 国内精品嫩模av私拍在线观看 | 美女福利精品视频| 韩国精品久久久999| 亚洲欧美日韩中文在线制服| 欧美二区在线播放| 羞羞答答国产精品www一本| 欧美精品一区二区蜜臀亚洲 | 亚洲电影免费在线| 亚洲国产精品久久久久婷婷884| 美国十次成人| 亚洲天堂黄色| 亚洲精品一区二区三区在线观看| 亚洲欧洲另类国产综合| 亚洲日本久久| 香蕉av福利精品导航| 日韩一级在线| 久久夜色精品国产噜噜av| 亚洲一区二区三区乱码aⅴ| 亚洲欧美日韩中文视频| 日韩视频三区| 久久这里只有| 久久成人资源| 欧美激情精品久久久久久变态| 亚洲精品乱码久久久久久蜜桃麻豆 | 一区二区三区日韩欧美| 久久久精品一品道一区| 亚洲欧美日韩一区二区| 亚洲免费一在线| 在线一区日本视频| 欧美日本在线| 一区二区三区导航| 亚洲免费电影在线观看| 久热爱精品视频线路一| 免费欧美网站| 国内精品久久久久久久果冻传媒 | 久久成人在线| 一本久久青青| 欧美~级网站不卡| 欧美成人激情视频免费观看| 国产亚洲午夜高清国产拍精品| 亚洲欧美美女| 欧美jizz19性欧美| 一区二区三区 在线观看视频 | 精品福利电影| 欧美日韩在线一区二区| 久久精品国产99国产精品| 91久久综合| 中文一区在线| 亚洲一级二级在线| 欧美日韩一区二区三区视频| 亚洲精品国产视频| 亚洲美女av电影| 欧美日韩在线播| 亚洲视频久久| 久久一日本道色综合久久| 亚洲电影免费观看高清完整版在线观看| 午夜亚洲伦理| 亚洲电影免费在线|