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

教父的告白
一切都是紙老虎
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 暗夜教父 閱讀(523) 評論(0)  編輯 收藏 引用 所屬分類: JAVA

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(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精品99| 欧美三日本三级少妇三2023| 亚洲国内精品在线| 久久国产主播精品| 午夜精品国产更新| 香蕉视频成人在线观看 | 鲁大师影院一区二区三区| 久久国产欧美精品| 久久人人爽人人| 欧美精品手机在线| 国产精品视频第一区| 国产一区二区三区高清播放| 亚洲电影观看| 亚洲视频1区| 久久精品国产亚洲精品 | 亚洲影院色无极综合| 欧美专区日韩专区| 免费观看成人网| 日韩视频专区| 久久精选视频| 欧美日韩一区自拍| 国产视频精品xxxx| 亚洲国产小视频| 午夜电影亚洲| 亚洲成色精品| 亚洲欧美美女| 欧美 日韩 国产一区二区在线视频| 欧美日韩一区免费| 精品成人在线视频| 一二三区精品| 欧美成人免费在线视频| 中文日韩在线视频| 蜜臀a∨国产成人精品| 国产精品久久久久aaaa樱花| 尤物yw午夜国产精品视频| 中文国产成人精品久久一| 久久精品国产一区二区电影| 亚洲精品乱码久久久久久| 久久久999精品视频| 欧美偷拍一区二区| 亚洲国产精品一区二区第四页av | 亚洲黄色免费电影| 先锋亚洲精品| 99综合电影在线视频| 免费成人黄色片| 国产日韩免费| 亚洲在线免费观看| 亚洲精品欧美| 欧美极品在线视频| 亚洲黄色成人久久久| 欧美国产91| 久久人人97超碰国产公开结果| 国产欧美日韩视频在线观看| 亚洲伊人一本大道中文字幕| 一本色道久久综合亚洲91| 欧美绝品在线观看成人午夜影视 | 国内成+人亚洲+欧美+综合在线| 国产精品99久久不卡二区| 亚洲二区视频| 欧美国产视频日韩| 亚洲激情视频在线播放| 欧美不卡高清| 久久亚洲精品网站| 在线观看亚洲| 免费观看一区| 欧美大片在线影院| 一本久久a久久精品亚洲| 亚洲精品乱码久久久久久日本蜜臀 | 国产女人水真多18毛片18精品视频| 中文精品一区二区三区| 最新亚洲激情| 欧美精品九九99久久| 亚洲国产精品久久精品怡红院| 欧美亚洲一区在线| 国产日韩欧美麻豆| 久久深夜福利| 久久久夜夜夜| 99精品欧美| 亚洲影音一区| 韩国欧美一区| 亚洲国产日韩欧美在线图片| 欧美人成在线视频| 欧美一级二级三级蜜桃| 欧美在线观看网站| 亚洲激情网站免费观看| 亚洲美女视频在线观看| 国产精品一区二区三区久久| 久久看片网站| 欧美日韩国产麻豆| 欧美在线啊v| 久久综合伊人77777| 亚洲私人黄色宅男| 久久精品国产久精国产思思| 美女被久久久| 香蕉成人久久| 久久男人资源视频| 一区二区高清在线| 久久国产精品高清| 国产精品99久久久久久久女警| 先锋影音国产一区| 最近中文字幕日韩精品| 一个色综合av| 亚洲国产成人在线| 在线视频日韩精品| 1024成人| 亚洲欧美日韩天堂| 日韩一区二区精品在线观看| 久久大逼视频| 久久成年人视频| 欧美人与禽性xxxxx杂性| 久久国产精彩视频| 欧美日韩一区二区三| 另类激情亚洲| 国产精品久久久久久模特| 亚洲欧洲在线观看| 亚洲国产高清一区二区三区| 先锋影音国产精品| 欧美一区二区日韩| 欧美日韩在线播放一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日本在线播放| 久久性天堂网| 国产一区三区三区| 欧美在线国产精品| 亚洲欧美另类中文字幕| 欧美精品91| 亚洲国产精品专区久久| 一区三区视频| 欧美亚洲一区在线| 欧美一级理论片| 国产精品久久一区主播| 一本色道久久综合狠狠躁篇怎么玩| 亚洲美女啪啪| 欧美精品一区二区在线观看| 亚洲大片精品永久免费| 亚洲国产高清自拍| 欧美激情中文字幕一区二区| 亚洲一区二区成人在线观看| 激情综合色综合久久| 午夜视频久久久久久| 欧美一级片在线播放| 国产乱子伦一区二区三区国色天香| 日韩视频一区二区三区在线播放| 亚洲老板91色精品久久| 欧美二区乱c少妇| 亚洲国产日韩在线| 亚洲精品国产精品国产自| 欧美国产日本| 99pao成人国产永久免费视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美日韩一区免费| 亚洲欧美精品伊人久久| 久久天堂成人| 在线欧美小视频| 男人的天堂成人在线| 亚洲人成高清| 性久久久久久久久| 激情丁香综合| 欧美日韩中字| 久久av一区二区三区| 亚洲电影免费观看高清完整版在线观看 | 午夜精品久久久久久久99樱桃 | 欧美日韩国产色站一区二区三区| 亚洲精品精选| 亚洲欧美日本精品| 国产亚洲一区二区精品| 老司机午夜精品视频| 亚洲免费观看高清在线观看| 亚洲欧美另类国产| 红桃视频一区| 欧美日韩中文在线| 久久免费黄色| 亚洲制服欧美中文字幕中文字幕| 美脚丝袜一区二区三区在线观看| 99re66热这里只有精品3直播 | 亚洲成人中文| 午夜精品福利一区二区蜜股av| 国产一区深夜福利| 欧美日韩精品综合在线| 欧美一级久久久久久久大片| 欧美国产国产综合| 欧美一区二区三区男人的天堂| 狠狠色丁香久久婷婷综合丁香 | 在线亚洲欧美专区二区| 麻豆91精品| 欧美一级视频| 亚洲一区二区黄色| 在线免费观看一区二区三区| 国产精品国产三级欧美二区| 美女主播精品视频一二三四| 亚洲免费一区二区| 亚洲韩日在线| 免费成人高清视频| 久久不见久久见免费视频1| 中文日韩在线视频| 久久久999成人| 久久久精品五月天| 亚洲一区二区黄色| 亚洲精品一区二区三区av| 国产日韩专区|