Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121771
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 184
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-01 23:15
个人简介

我只是一个喜欢开发的测试,喜欢测试的开发,喜欢每天都知道得更多一些,更深入一些的感觉。。。。。

文章分类

全部博文(14)

文章存档

2015年(5)

2014年(2)

2013年(7)

分类: 敏捷开发

2015-08-13 21:51:01

Eclipse中使用ANT实现自动从SVN Checkout代码、编译、测试(2)

   

4.       从版本库checkout源文件

为了实现自动部署,往往需要从版本库中checkout出最新的代码。在Eclipse中怎样使用SVN,我会在另外一个文档里面详细说明,在此我们默认已经安装了SVN插件。此外还需要下载svnant,用来在Ant中访问SVN,我下载的svnant的版本是1.3.1,下载后解压缩在F:\Library\JavaStudio\svnant

 

点击(此处)折叠或打开

  1. <property name="antdir" location="F:\Library\JavaStudio\svnant\lib" />
  2. <property name="svn.username" value="admin" />
  3. <property name="svn.password" value="123456" />
  4. <property name="svn.url" value="svn://127.0.0.1/Marketplace/" />
  5. <property name="svn.outdir" value="F:\src"></property>
  6.              
  7. <path id="path.svnant">
  8.        <fileset dir="${svnantDir}">
  9.               <include name="svnant.jar"/>
  10.               <include name="svnClientAdapter.jar"/>
  11.               <include name="svnjavahl.jar"/>
  12.               <include name="svnkit.jar"/>
  13.        </fileset>
  14. </path>
  15. <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant" />
  16.              
  17. <target name="checkout">
  18.        <svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="false" svnkit="false"/>
  19.        <svn refid="svnparams">
  20.               <checkout url="${svn.url}" revision="HEAD" destPath="${svn.outdir}" />
  21.        </svn>
  22. </target>


上例很简单,一看就能明白,首先我们定义了svn的用户、密码、urlcheckout的目标目录,然后需要把svnantlib下的这4jarsvn task文件都引入进来。

 

利用svnant访问SVN有三种方式:commandlinejavahlsvnkit,上例中使用了第一种方式,可以看到把javahlsvnkit都关闭了。事实上,可能是因为这种url方式,只能用这个方式,用其他两种方式,只能导出版本库的根目录,而不能导出根目录下的子目录,即

点击(此处)折叠或打开

  1. <property name="svn.url" value="svn://127.0.0.1/" />
这样是可以导出的,如果和写成和上例中一样,就会报错


目前还不确定是什么原因。

 

 

5.       编译

编译很简单,就是用javac,设置代码所在路径为源目录srcdir,编译后放置class文件的目录为目标目录destdir。如果需要添加jar包,在<javac>标签下使用子标签<classpath>,下例中因为要编译使用TestNG编写的单元测试用例,用到TestNGjar包,所以用<classpath>标签包含进来。

点击(此处)折叠或打开

  1. <property name="srcdir" location="src" />
  2. <property name="testdir" location="test" />
  3. <property name="compileDir" location="build/classes" />
  4. <property name="libDir" location="WebContent/WEB-INF/lib" />
  5. <property name="testngLib" location="${libDir}/testngLib" />
  6.  
  7. <target name="compile" depends="init">
  8.        <javac srcdir="${srcDir}" destdir="${compileDir}" includeantruntime="false" />
  9.        <javac srcdir="${testDir}" destdir="${compileDir}" includeantruntime="false">
  10.               <classpath>
  11.                      <pathelement path="${testngLib}\testng.jar"/>
  12.               </classpath>
  13.        </javac>
  14. </target>


6.       单元测试(TestNG)


我使用了TestNG写单元测试用例,要自动运行这些测试用例,首先要定义TestNG TaskAnt为第三方扩展提供了一个类Task,所有的第三方自定义的Task类都必须继承自Ant的这个Tack类。TestNGTask类就是TestNGAntTask

点击(此处)折叠或打开

  1. <taskdef name="testng" classname="org.testng.TestNGAntTask">
  2.        <classpath>
  3.               <pathelement path="${testngLib}\testng.jar"/>
  4.        </classpath>
  5. </taskdef>


执行测试用例,需将TestNGjar包等都包含进来,设置测试结果输出目录、TestNG配置文件。

点击(此处)折叠或打开

  1. <property name="srcdir" location="src" />
  2. <property name="testdir" location="test" />
  3. <property name="compileDir" location="build/classes" />
  4. <property name="libDir" location="WebContent/WEB-INF/lib" />
  5. <property name="testngLib" location="${libDir}/testngLib" />
  6.  
  7. <path id="classpath.test">
  8.        <fileset dir="${testngLib}">
  9.               <include name="**/*.jar" />
  10.        </fileset>
  11.        <fileset dir="${libDir}">
  12.               <include name="**/*.jar" />
  13.        </fileset>
  14.        <pathelement location="${compileDir}" />
  15.        <pathelement location="${testDir}" />
  16.        <pathelement location="${srcDir}" />
  17. </path>
  18.  
  19. <target name="test" depends="compile">
  20.        <testng outputdir="test-output" classpathref="classpath.test">
  21.                <xmlfileset dir="${srDdir}" includes="testng.xml"/>
  22.        </testng>
  23. </target>


7.       打包

打包的结果jar包名,加入了日期。

点击(此处)折叠或打开

  1. <target name="package" depends="compile">
  2.        <tstamp></tstamp>
  3.        <jar destfile="EMS${DSTAMP}.jar" basedir="${compileDir}" />
  4. </target>

 

8.       替换指定文件中字符串

部署的时候,经常需要替换配置文件中的一些配置项的值,如服务器IP、数据库IP,这些每个环境都会不同。下面的例子就是用来演示这样的一个场景。

点击(此处)折叠或打开

  1. <property name="destServerIP" value="172.16.210.127" />
  2. <property name="srcServerIP" value="172.16.210.147" />
  3. <property name="destDBIP" value="172.16.210.91" />
  4. <property name="srcDBIP" value="172.16.210.144" />
  5. <property name="destFile" location=" F:\EMS\config \config.xml" />
  6.  
  7. <target name="replaceIP">
  8.        <replace file="${destFile}" token="${srcServerIP}" value="${destServerIP}" />
  9.        <replace file="${destFile}" token="${srcDBIP}" value="${destDBIP}" />
  10. </target>

 

参考资料

1.       北京圣思园Ant深入详解视频  张龙

2.       ant脚本checkout svn项目 http://xiaohu0901.iteye.com/blog/891077

3.       Ant构建工具(SVN下载项目,编译,到tomcat下运行项目) http://blog.csdn.net/rose19891213/article/details/6085899

4.       ant 实现svn checkout代码 + Junit测试生成报告 + ftp上传 + 发邮件

http://blog.csdn.net/grhlove123/article/details/7712630

5.       SVNAnt 配置的入门例子  http://blog.csdn.net/zuoluoboy/article/details/21105347

 

阅读(2227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~