`
liuhaixiao
  • 浏览: 148305 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ant svn

阅读更多

原文出处:[url]http://www.wangchao.net.cn/bbsdetail_180721.html[/url]   我是抄袭过来,留作以后查看

Using SVN with Ant

 

摘要:

Subversion是越来越被广泛使用的版本管理工具,使用Ant脚本从Subversion获取代码,实现Daily Build。

 

1.Subversion概述

先引用[url=http://svnbook.red-bean.com/nightly/en/svn-book.html]Version Control with Subversion[/url] 中开头的话:

 

“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的特性和优势为证,懒得写了,直接看这里:[url=http://subversion.tigris.org/]Subversion的老家[/url]。

关于如何使用Subversion以及相关客户端软件,网上慢慢看吧,[url=http://svnbook.red-bean.com]官方自由图书[/url]不错。

 

2.蚂蚁出场

团队最近的项目中即使用Subversion作为版本控制工具。Daily Build过两天就得搭建起来了,上蚂蚁!

Tigris.org提供了Subclipse,SvnClientAdapter和SvnAnt。(见[url=http://subclipse.tigris.org/index.html]这里[/url])

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使用说明文档,也可以在[url=http://subclipse.tigris.org/svn/subclipse/branches/svnant/1.0.x/doc/svn.html]这里[/url]直接查看。

使用其中的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:[url=http://tmate.org/svn/kb/user-guide-svnant.html]Making SvnAnt use JavaSVN[/url]

我的实际步骤如下:

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测试脚本,结果如下:

[img]http://blog.csdn.net/images/blog_csdn_net/beegee/20118/r_SVNAnt_task.gif[/img]

 

OK!

 

-end-

分享到:
评论

相关推荐

    antsvn更新打包部署提交自动化

    标题中的“antsvn更新打包部署提交自动化”涉及的是在软件开发过程中如何利用Ant(一个Java构建工具)和Subversion(SVN,版本控制系统)实现自动化的构建、更新、打包、部署和提交流程。这个过程旨在提高开发效率,...

    ant svn插件jar包

    这个插件通常以jar包的形式存在,例如在给定的"antsvn"压缩包中。为了使用这个插件,你需要将jar包添加到Ant的类路径中。这样,你就可以在Ant构建文件中声明新的任务,比如`<svn>`,并配置相关属性来执行SVN命令。 ...

    Ant SVN依赖JAR包

    在Java开发过程中,Apache Ant和Subversion(SVN)是两个重要的工具。Ant是一个基于XML的构建工具,用于自动化Java项目构建、编译、测试和部署等任务。而SVN则是一个版本控制系统,用于管理软件项目的源代码版本,...

    ant操作SVN的jar包

    在IT行业中,Ant和SVN是两种非常重要的工具。Ant是一种由Apache软件基金会开发的Java构建工具,它允许开发者通过XML文件定义任务来自动化构建、测试和部署Java应用程序。而SVN(Subversion)则是一种版本控制系统,...

    Ant SVN依赖JAR包之svnjavahl

    Ant构建J2EE应用,通常从版本控制器SVN或其他下载源码,以下为Ant SVN依赖JAR包

    Ant Svn(Subversion Task)-开源

    Ant SVN(Subversion Task)是Apache Ant项目中的一个任务,它是专为Java开发者设计的构建工具,用于自动化软件项目的构建、编译、测试等过程。Subversion是一个流行的开源版本控制系统,用于跟踪文件和目录的变更,...

    Ant SVN依赖JAR包svnClientAdapter

    Ant构建J2EE应用,通常从版本控制器SVN或其他下载源码,以下为Ant SVN依赖JAR包

    Ant SVN依赖JAR包之svnant

    Ant构建J2EE应用,通常从版本控制器SVN或其他下载源码,以下为Ant SVN依赖JAR包

    ant学习之集成svn

    标题“ant学习之集成svn”涉及的是在Java项目中使用Apache Ant工具来集成Subversion(SVN)版本控制系统的过程。Apache Ant是一个Java库和命令行工具,它的设计目的是驱动构建过程,而Subversion则是一种广泛使用的...

    ant打包的代码,包括从svn上获取代码

    在描述中提到的"自动下载代码"这一环节,就是利用Ant与SVN的集成,通过Ant的任务或插件(如`subversion`任务)从SVN仓库拉取最新的源代码。 打包是软件开发过程中一个重要的步骤,它通常包括编译、测试和创建最终的...

    SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明

    在这个SVN+ant服务器代码打包编译流程中,我们将深入探讨这两个工具的集成使用,以及如何通过build.xml和build.properties文件实现自动化编译。 首先,让我们了解SVN的安装和配置。在Windows上,你可以下载...

    ant获取SVN版本信息的jar包xmltask以及安装,使用方法

    本主题聚焦于如何利用Ant与XMLTask jar包来获取SVN(Subversion)版本信息。下面将详细介绍这个过程以及相关知识点。 首先,了解Ant。Ant是一个基于Java的构建工具,它提供了跨平台的构建脚本能力,能够执行编译、...

    利用ant脚本 自动构建svn增量.docx

    【Ant脚本自动构建SVN增量】是一种高效且节省资源的软件开发实践,它使得开发和测试团队能够自动化处理从代码提交到构建、打包、再到部署的整个过程。使用Ant,一个基于XML的构建工具,可以创建可重复执行的脚本来...

    ant 脚本从svn上取代码打包代码全,同时包括相关的jar包

    在给定的场景中,"ant 脚本从svn上取代码打包代码全,同时包括相关的jar包",这意味着我们需要了解如何用Ant配合Subversion(SVN)进行代码管理,并打包项目,同时处理依赖的jar文件。 首先,让我们来看看Ant脚本的...

    svnant-1.1.0-RC2.zip

    《Ant与SVN的整合工具:svnant-1.1.0-RC2》 在软件开发过程中,版本控制工具Subversion(简称SVN)扮演着至关重要的角色,它允许团队成员协同工作,管理代码的不同版本。而Apache Ant作为Java项目自动化构建工具,...

    使用svnant插件让ant支持从svn更新项目

    在IT行业中,构建自动化是提高开发效率的关键环节之一,而Ant和SVN是两个非常重要的工具。...而压缩包子文件的文件名称"antsvn"可能包含的就是示例代码或配置文件,用于演示如何在实际项目中设置和使用svnant插件。

    Ant+Svn打包Web工程

    本主题将深入探讨如何结合Apache Ant和Subversion(Svn)来打包Web工程,这是一个常见的开发实践,尤其对于Java Web项目而言。首先,让我们理解这两个工具的核心概念。 **Apache Ant** 是一个Java库和命令行工具,...

    基于ant和svnkit的WebProject增量打包工具(一)

    接下来就得为该工具配置环境变量(其实不配也行,就是以后调用麻烦点就是了^@^),比如我将其解压到E盘的根目录下,那么就得在window的环境变量中的path中配置上路径:“E:\apache-ant-1.9.2-精简版本\bin”,这样做的...

    Ant+Junit+Svn实现自动单元测试

    【Ant+JUnit+Svn实现自动单元测试】 Ant是一种流行的Java构建工具,它使用XML格式的构建文件(build.xml)来定义一系列的任务,如编译、打包、测试等,以自动化软件开发过程。Ant的主要优点是它的灵活性和可扩展性...

    ant+svn的测试框架

    标题中的“ant+svn”指的是在软件开发过程中使用Apache Ant工具和Subversion(SVN)版本控制系统进行构建和版本管理的组合。Ant是Java平台上的一种开源构建工具,它使用XML来描述构建过程,使得构建脚本易于理解和...

Global site tag (gtag.js) - Google Analytics