Ant步步为营(3)在svn上checkout code.
马上下班了,在发一篇吧。今天这个的时候发现好多好的网址,所以提前发了。
老规矩:build.xml
<?xml version="1.0"?>
<project name="StartProduct" default="checkout.testcode" >
<property file="build.properties"></property>
<!--引入svn的jar包-->
<path id="svnant.lib">
<fileset dir="${ant.libs}">
<include name="svnant.jar"/>
<include name="svnjavahl.jar"/>
<include name="svnClientAdapter.jar"/>
<include name="svnkit.jar"/>
</fileset>
</path>
<!-- 引用svn task文件,使用svn任务可以使用,下边这两个是jar里的文件-->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.lib" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${ant.libs}/ant-contrib-0.6.jar"/>
</classpath>
</taskdef>
<!--
<target name="checkout.all" >
<if>
<and>
<not>
<equals arg1="SWTBot" arg2="SWTBot" />
</not>
</and>
<then>
<antcall target="checkout.testcode"></antcall>
</then>
</if>
</target>
-->
<!--Target to checkout code of testing project from svn-->
<target name="checkout.testcode" if="true">
<if>
<contains string="${svn.testcode.url}" substring="swtbot" />
<!--用正则表达式的方式找出要check的代码-->
<then>
<propertyregex property="dest.dir" input="${svn.testcode.url}" regexp=".*/([^/]*)/" select="\1" override="true" global="true"/>
</then>
<else>
<propertyregex property="dest.dir" input="${svn.testcode.url}" regexp=".*/(branches)/(.*)/([^/]*)/" select="\1_\2_\3" override="true" global="true"/>
</else>
</if>
<echo>testcode.dest=${svncode.dir}\${dest.dir}</echo>
<!-- 在本地目录下创建一个文件夹存放在svn上下载下来的code-->
<mkdir dir="${svncode.dir}\${dest.dir}"/>
<!-- 清空本地文件夹下的内容-->
<delete dir="${svncode.dir}/${dest.dir}" quiet="true" />
<available file="${svncode.dir}\${dest.dir}" type="dir" property="svn.present"/>
<if>
<equals arg1="${svn.present}" arg2="true" />
<then>
<svn svnkit="true" username="${svn.username}" password="${svn.password}" javahl="false" >
<cleanup dir="${svncode.dir}\${dest.dir}"/>
</svn>
<svn svnkit="true" username="${svn.username}" password="${svn.password}" javahl="false" >
<update revision="HEAD" dir="${svncode.dir}\${dest.dir}">
</update>
</svn>
</then>
<else>
<svn svnkit="true" username="${svn.username}" password="${svn.password}" javahl="false" >
<checkout url="${svn.testcode.url}" destPath="${svncode.dir}\${dest.dir}" />
</svn>
</else>
</if>
</target>
</project>
build.properties文件内容:
file.dir=G:\\_files
ant.libs=E:\\New_SWTBot\\swtBotWorkBenchBranch\\org.talend.ant.demo\\lib
svn.testcode.url=https\://**/svn/swtbot/
svn.username=**
svn.password=**
svncode.dir=G:\\_files
> 要实现ant可以从svn服务器上检出代码要使用svnant jar,svnjavahl.jar,svnClientAdapter.jar,svnkit.jar文件。
> 执行脚本后会在G:\_files下新建一个SWTBot文件夹,然后checkout code到这个文件夹下。
> 几个好的连接网址:
http://tianlihu.iteye.com/blog/741239
http://enjoyyou.blog.hexun.com/41449457_d.html
http://nneverwei.iteye.com/blog/679999
http://hzl7652.iteye.com/blog/1188967
http://hi.baidu.com/gg7663/item/970418469b3cd1e6bcf4516a
http://ant.apache.org/manual/index.html