[原创]Windows环境中ant访问subverion集成
来源: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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论