[原创]Windows环境中ant访问subverion集成

发布于 2022-08-03 16:12:24 字数 12140 浏览 10 评论 0

来源:bbs.scmroad.com 作者:laofo

概括: 本篇主要讲windows环境中如何在ant下访问subversion.本篇文章的目的就是为利用Cruisecontrol做继续集成做一个铺垫,

1. 先安装好subversion确认可以访问
  在命令行窗口敲击svn验证可以工作.如果看到类似下面的信息,则表示svn已经安装正确
D:DevEnv>svn
使用“svn help”得到用法。
D:DevEnv>
请提交一个项目的库到svn中.并确保可以利用授权账户提交修改代码.
在此文档中,我们是利用安装好 Cruisecontrol后的一个示例项目connectfour,我们把connectfour提交到svn中,并重命名为connectfour- svn,你可以随意找一个实验性的目录提交到svn中,并根据具体情况修改下边的build.xml文件
注意:
请把svn.exe所在目录加到系统环境变量中
connectfour项目位置,当你安装好Cruisecontrol后,一般在Cruisecontrol/projects目录下

2. 安装好ant,确认ant可以工作
在命令行敲击ant,如果能看到以下信息,证明ant安装正确
引用:

    C:Documents and Settingsscmroad>ant
    Buildfile: build.xml does not exist!

    Build failed

    C:Documents and Settingsscmroad>

注意:
如果当前目录下有build.xml文件,则ant就会执行这个文件,见到的结果可能不同.

请设置好ANT_HOME
正确的ANT_HOME设置是:set  JAVA_HOME=  D:DevEnvANT
错误的ANT_HOME设置是:set  JAVA_HOME=  D:DevEnvANTbin

请正确安装好JDK,设置好JAVA_HOME
正确的JAVA_HOME设置是:set  JAVA_HOME= D:DevEnvSunSDKjdk
错误的JAVA_HOME设置是:set  JAVA_HOME= D:DevEnvSunSDKjdkbin

3. 给ant添加SVNAnt的任务(task)
下载地址
http://subclipse.tigris.org/svnant.html

请根据具体的subversion版本,下载相应版本的svnant
解压之后,请把以下三个文件拷贝到svn安装目录的lib目录下,并把该目录加到系统变量中去
引用:

    svnant.jar
    svnClientAdapter.jar
    svnjavahl.jar

4. 验证SVNAnt
  把connectfour-svn这个项目checkout到D:projects目录下,
你会看到在D:projectsconnectfour-svn目录下有一个build.xml文件,修改如下:
引用:

    <project name="connectfour-svn" default="Tasklist">
    <property environment="env"/>
    <property name="svn.username" value="***"/>
    <property name="svn.password" value="****"/>
    <property name="svn.path" value="http://****/projects/connectfour-svn"/>
    <property name="svnant" value="${ant.home}lib"/>
    <!--
    任务定义
    设定svnant 的classpath,包含svnant 目录下所有的jar 包
    -->
    <!--
    ${svnant} 就是svnant所需要的svnant.jar svnClientAdapter.jar 和svnjavahl.jar所在的位置
    当然这里也可以直接写成
    <fileset dir="D:DevEnvApacheAnt171lib">
    -->

    <path id="svnant.dir">
    <fileset dir="${svnant}">
    <include name="*.jar"/>
    </fileset>
    </path>
    <!-- SVNAnt 任务定义-->
    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.dir" />

    <!--检验安装是否正确
    利用SVNAnt的wcVersion属性得到一些本地working copy的信息
    -->
    <target name="testSVNAnt">
         <svn>
             <wcVersion path= "${basedir}" />
         </svn>
    <!--
    <wcVersion path= "${basedir}" />
    相当于绝对路径的
    <wcVersion path= "D:projectsconnectfour-svn" />

    -->
         <echo message= "Subversion repository url     : " />
    <echo message= "${repository.url}" />
    <echo message= "Checking out the head version : ${committed.max}" />
    </target>

    <!--任务执行 -->
    <target name="checkout" depends="testSVNAnt">
    <svn username="${svn.username}" password="${svn.password}">
    <checkout url="${svn.path}"
    revision="HEAD" destPath="./Checkout" />
    </svn>
    </target>
    <!--
    属性解释
    url:项目的svn 地址
    revision:获取的版本号,HEAD 表示最新版本
    destPath:检出的工程存放路
    -->

    <!--
    <taskdef resource="svntask.properties" classpathref="project.classpath"/>
    -->

    <target name="update" depends="testSVNAnt">
    <svn username="${svn.username}" password="${svn.password}">
    <update dir="."
    recurse="true"
    revision="HEAD">
    </update>
    </svn>
    </target>
        <target name="all" depends="clean, compile, sleep, test, jar"/>
        <target name="clean">
            <delete dir="target" quiet="true" />
    <delete dir="lib" quiet="true" />
    <delete dir="src" quiet="true" />
    <delete dir="test" quiet="true" />
    <delete dir="TestProject" quiet="true" />
    <delete file="README.txt" />
        </target>
        <target name="compile" depends="update">
            <mkdir dir="target/classes"/>
            <javac srcdir="src" destdir="target/classes"/>
        </target>

        <target name="sleep">
            <echo message="Sleeping for a while so you can see the build in the new dashboard" />
            <sleep seconds="60" />
        </target>

        <target name="test" depends="compile">
            <mkdir dir="target/test-classes"/>
            <javac srcdir="test" destdir="target/test-classes">
                <classpath>
                    <pathelement location="target/classes"/>
                    <pathelement location="lib/junit.jar"/>
                </classpath>
            </javac>

            <mkdir dir="target/test-results"/>
            <junit haltonfailure="no" printsummary="on">
                <classpath >
                    <pathelement location="target/classes"/>
                    <pathelement location="lib/junit.jar"/>
                    <pathelement location="target/test-classes"/>
                </classpath>
                <formatter type="brief" usefile="false"/>
                <formatter type="xml" />
                <batchtest todir="target/test-results" >
                    <fileset dir="target/test-classes" includes="**/*Test.class"/>
                </batchtest>
            </junit>
        </target>

        <target name="jar" depends="compile">
            <jar jarfile="target/connectfour.jar" basedir="target/classes"/>
        </target>

    <!--输出项目的6个内置 属性(build-in properties) -->
    <target name="ProjectProperties">
    <echo message= "Project name: ${ant.project.name}" />
    <echo message= "Base directory: ${basedir}" />
    <echo message= "Buildfile location: ${ant.file}" />
    <echo message= "Ant home: ${ant.home}" />
    <echo message= "Ant version: ${ant.version}" />
    <echo message= "JVM version: ${ant.java.version}" />
    </target>

    <!-- 严格上讲ant.home并不是内置属性,ant的manual分描述如下:
    There is also another property, but this is set by the launcher script and therefore maybe not set inside IDEs:
    ant.home            home directory of Ant
    -->

    <!--输出这个build.xml文件中所有的任务(Task)信息-->
    <target name="Tasklist">
    <echo message="ProjectProperties"/>
    <echo message="testSVNAnt"/>
    <echo message="checkout"/>
    <echo message="update"/>
    <echo message="clean"/>
    <echo message="compile"/>
    <echo message="test"/>
    <echo message="jar"/>
    </target>
    </project>

5. 在ant中访问svn
打开命令行程序,在D:projectsconnectfour-svn目录下,运行ant,
如果没有错误信息提示,证明build.xml是正确的,
如果运行ant testSVNAnt通过,证明SvnAnt安装正确

如果上面没有错误,那么证明在ant下访问svn就通过了.

ps:如果大家集成的时候有什么问题,可以提出来,一起解决.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文