使用ant实现自动部署、发邮件


经过摸索,监控工具的开发过程实现了利用Ant来自动从CVS服务器checkout源码,然后编译,进行单元测试并生成测试报告,部署或者发布,最后邮件通知的流程现将Ant的实践总结跟贴于此

  Ant的核心就在于它的Task,分为Core Task和Optional Task,通过这些Task,可以完成很多任务而不仅仅是建构另外,还可以自己编写扩展Task类实现特定的功能

  使用Ant的Task时,需要注意的是很多Task需要相关的Jar包在环境变量classpath中,或者放在ANT_HOMEib下,这样可以省去设定classpath的麻烦比如发送MIME形式的Email的mail Task需要有mail.jar(JavaMail)和activation.jar(JavaMail需要的JAF)这些在ant的文档中都有说明

  执行具体任务的例子:

  Ant从CVS服务器checkout源码通过cvs任务实现:

  <target name="checkout">

  <mkdir dir="${localdir}"/>

  <cvs cvsRoot="${cvsroot}" package="${module}" dest="${localdir}">

  <commandline>

  <argumentline="checkout"/>

  </commandline>

  </cvs>

  </target>

  编译是通过javac任务实现:

  <target name="compile" depends="checkout">

  <javac srcdir="${localdir}\${module}\src" destdir="${localdir}\${module}\bin" includes="**\*.java">

  <classpath refid="classpath"/>

  </javac>

  </target>

  编译好了之后还可以另行打包或者创建副本,可以通过copy和zip等任务

  单元测试是利用junit,生成测试报告用junitreport:

  <target name="junit" depends="dist">

  <junit printsummary="on">

  <classpath>

  <pathelement location="${localdir}\${module}\bin"/>

  </classpath>

  <formatter type="xml"/>

  <batchtest>

  <fileset dir="${localdir}\${module}\bin">

  <include name="**\*Test.class"/>

  </fileset>

  </batchtest>

  </junit>

  <junitreport>

  <fileset dir=".">

  <include name="TEST-*.xml"/>

  </fileset>

  <report format="noframes"/>

  </junitreport>

  </target>

  单元测试都无误后,就可以通过上传至ftp:

  <target name="publish" depends="junit">

  <property name="ftpserver" value="xxx"/>

  <property name="ftpdir" value="/Monitor"/>

  <ftp server="${ftpserver}" userid="anonymous" password="@" remotedir="${ftpdir}">

  <fileset dir="${distdir}">

  <include name="${dist.zip}"/>

  </fileset>

  </ftp>

  </target>

  这里要说明的是,<ftp>任务中有个属性action,用于指明操作命令(包括"put", "get", "del", "list", "chmod", "mkdir","rmdir")当然,还需要有相应的权限

  之后就可以邮件通知了可以将单元测试报告一并发送:

  <target name="mail" depends="publish">

  <tstamp>

  <format property="TODAY" pattern="yyyy-MM-dd"/>

  <format property="TSTAMP" pattern="hh:mm:ss"/>

  </tstamp>

  <property name="mailto" value="[email protected], [email protected] "/>

  <property name="mailfrom" value="[email protected]"/>

  <mail from="${mailfrom}" tolist="${mailto}" mailhost="mail.gmail.com"

  subject="xxxx"

  messagefile="junit-noframes.html" messagemimetype="text/html">

  <fileset dir=".">

  <include name="TEST-*.xml"/>

  </fileset>

  </mail>

  </target>

  上面,<tstamp/>用来得到时间戳,并利用<format/>来对日期和时间格式化,ant的这个功能很实用

  Ant的Task还有很多,有待进一步挖掘不过对于自动的编译测试等流程,上面这些任务应该就够了

 

你可能感兴趣的:(ant,JUnit,单元测试,cvs,Gmail)