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

教父的告白
一切都是紙老虎
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>
            欧美日本韩国一区| 国产伦精品一区二区三区视频孕妇 | 亚洲国产mv| 国产夜色精品一区二区av| 欧美视频中文在线看| 亚洲欧美一区二区三区极速播放| 韩国精品在线观看| 韩国久久久久| 一区二区成人精品 | 午夜一级在线看亚洲| 欧美一区二区视频在线观看| 久久久久久久999| 欧美成人精品1314www| 亚洲激情在线激情| 一区二区三区欧美激情| 久久精品三级| 国产精品久久久久久亚洲毛片 | 亚洲午夜精品视频| 亚洲一区二区av电影| 亚洲一区二区三区三| 欧美一区二区精美| 欧美激情按摩在线| 亚洲高清免费视频| 久久国产主播精品| 亚洲开发第一视频在线播放| 久久www成人_看片免费不卡| 欧美日韩国产精品一区| 日韩亚洲成人av在线| 欧美成人免费全部| 久久久久中文| 一区二区三区在线不卡| 久久亚洲私人国产精品va媚药| 亚洲一区日韩| 国产精品推荐精品| 国产精品毛片va一区二区三区| 免播放器亚洲| 亚洲成色999久久网站| 亚洲中字在线| 一本色道久久综合亚洲精品小说 | 久久九九有精品国产23| 91久久夜色精品国产九色| 亚洲一区中文| 久久久久综合网| 亚洲国产老妈| 老司机精品久久| 欧美福利视频一区| 99视频+国产日韩欧美| 小处雏高清一区二区三区| 日韩视频在线播放| 一区二区三区精品视频| 欧美激情视频网站| 欧美成人午夜77777| 国产伦精品一区二区| 午夜精品一区二区三区四区| 亚洲一级免费视频| 亚洲国产高清一区| 亚洲最新色图| 欧美丝袜一区二区| 亚洲人成高清| 日韩视频一区| 亚洲精品中文字幕女同| 99这里只有精品| 韩国av一区二区| 亚洲综合第一| 夜夜躁日日躁狠狠久久88av| 欧美在线观看网站| 午夜一区在线| 久久精品免费看| 亚洲国产精品ⅴa在线观看| 亚洲国产精品久久91精品| av不卡在线观看| 亚洲精选在线观看| 欧美一区二区三区免费视频| 午夜亚洲福利| 欧美日韩在线免费| 欧美二区在线观看| 国外成人免费视频| 久久野战av| 亚洲人成77777在线观看网| 亚洲精品久久久一区二区三区| 久久影音先锋| 亚洲国产成人在线视频| 亚洲视频综合在线| 国产精品亚洲综合一区在线观看| 亚洲午夜久久久| 欧美中文字幕不卡| 亚洲国产中文字幕在线观看| 亚洲精品午夜| 久久国产精品一区二区| 亚洲国产成人porn| 欧美精品1区2区3区| 亚洲国产成人av| 国产欧美日韩一区| 欧美电影专区| 午夜激情综合网| 欧美jjzz| 久久成人精品电影| 1000部精品久久久久久久久| 欧美精品免费在线| 欧美一级精品大片| 欧美精品在线免费| 亚洲综合久久久久| 亚洲电影专区| 久久国产视频网| 亚洲欧美日韩直播| 亚洲色图在线视频| 欧美一乱一性一交一视频| 91久久国产综合久久| 一区在线免费| 国产亚洲毛片在线| 国产麻豆综合| 欧美日韩在线视频首页| 久久人人97超碰精品888| 亚洲一区中文| 欧美日韩亚洲一区二区三区四区| 亚洲图片欧美日产| 亚洲精品一区二区在线观看| 欧美在线免费看| 国产亚洲精品美女| 国产亚洲视频在线观看| 国产精品视频九色porn| 欧美午夜a级限制福利片| 欧美日韩一区二区三区在线| 免费亚洲一区二区| 亚洲高清不卡一区| 亚洲国产网站| 亚洲高清激情| 亚洲国产精品成人综合| 亚洲精品日韩久久| 在线亚洲自拍| 性做久久久久久免费观看欧美| 一区二区三区色| 亚洲伦理中文字幕| 亚洲欧美国产视频| 牛人盗摄一区二区三区视频| 欧美a一区二区| 欧美一区二区视频免费观看| 久久这里只有| 国产日韩欧美黄色| 亚洲美女av在线播放| 99精品视频免费观看视频| 一区二区三区成人| 欧美在线关看| 亚洲欧美日韩国产综合精品二区 | 亚洲天堂av在线免费| 一区二区三区视频观看| 亚洲视频在线观看一区| 国产一区二区三区的电影 | 欧美伦理在线观看| 久久久噜噜噜久久人人看| 老司机午夜免费精品视频| 亚洲自拍偷拍网址| 美日韩免费视频| 美女露胸一区二区三区| 国产精品丝袜白浆摸在线| 亚洲精品中文字| 亚洲国产欧美日韩精品| 欧美一区成人| 西西裸体人体做爰大胆久久久| 欧美成人三级在线| 亚洲福利视频一区| 伊人成人在线视频| 久久成人在线| 久久久久欧美| 精品1区2区| 久久久久久国产精品mv| 久久久精品国产免费观看同学| 国产精品xxxxx| 一本一本大道香蕉久在线精品| 亚洲精品色图| 国产精品扒开腿做爽爽爽视频| 亚洲国产色一区| 午夜欧美视频| 国产亚洲欧美日韩美女| 久久免费视频网站| 亚洲区一区二| 久久国产综合精品| 亚洲精选久久| 国产欧美在线观看一区| 久久国产精品网站| 亚洲欧洲一区二区在线播放 | 99国产精品自拍| 欧美日韩一区二区三区在线观看免 | 欧美成人免费播放| 一本色道久久综合亚洲91| 国产精品美女黄网| 麻豆成人综合网| 亚洲图片欧洲图片av| 欧美成人综合在线| 欧美一级专区免费大片| 亚洲久久一区| 亚洲成色777777女色窝| 欧美体内she精视频在线观看| 欧美在线短视频| 亚洲伦理自拍| 亚洲欧洲精品一区二区三区不卡 | 欧美国产欧美综合| 亚洲专区一二三| 亚洲美女网站| 亚洲国产精品悠悠久久琪琪|