经过摸索,监控工具的开发过程实现了利用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="xxx@gmail.com, xxx@gmail.com "/>
<property name="mailfrom" value="xxx@gmail.com"/>
<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还有很多,有待进一步挖掘不过对于自动的编译测试等流程,上面这些任务应该就够了
分享到:
相关推荐
Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 特性 批量执行:主机命令在线批量执行...
Spug是面向中小型企业设计的轻量级无代理的自动化运维平台,整合了主机管理,主机批量执行,主机在线终端,应用发布部署,在线任务计划,配置中心,监控,报警等多种功能。 官网地址: : 使用文档: : 更新日志:...
仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 ...
开发自动配置和使用条件 i. 36.1. 理解auto-configured beans ii. 36.2. 定位auto-configuration候选者 iii. 36.3. Condition注解 i. 36.3.1. Class条件 ii. 36.3.2. Bean条件 iii. 36.3.3. Property条件 iv. 36.3....
2.4.2混合使用自动和手动装配 2.4.3何时采用自动装配 2.5控制bean创建 2.5.1bean范围化 2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁bean 2.6小结 第3章高级bean装配 3.1声明父bean和子bean 3.1.1抽象基...
2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean ...
2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean ...
Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。特性批量执行:主机命令在线批量执行...
第5章:坐标和依赖/5.3 举例:发邮件模块的POM.xml文件 第5章:坐标和依赖/5.4 依赖的配置 第5章:坐标和依赖/5.5 依赖范围 第5章:坐标和依赖/5.6 传递性依赖 第5章:坐标和依赖/5.7 依赖调解 第5章:坐标和依赖/...
7.9. 使用“自动代理(autoproxy)”功能 7.9.1. 自动代理bean定义 7.9.1.1. BeanNameAutoProxyCreator 7.9.1.2. DefaultAdvisorAutoProxyCreator 7.9.1.3. AbstractAdvisorAutoProxyCreator 7.9.2. 使用元数据驱动...
在Maven2中实现了传递依赖,如此对于Hibernate所依赖的包,Maven2会自动下载,开发人员只需关心Hibernate即可。 注意:只有得到Maven支持的依赖,通常是plugin形式出现,才能获得这个特性。而且对于一些老的plugin,...
简述 这是博客内容管理系统,利用React+打字稿+React路由器+挂钩+蚂蚁...pm2自动化部署 nginx + ssl + http2 缓存 .... 未来可能加入 网易云音乐 移动适应 页面数据可视化统计 React性的 .... 克隆 git clone git@gith
服务器节点+柯阿+猫鼬路由用了装饰器包装,鉴别参数是否正确登录权限jwt百度sro推送,邮件通知pm2自动化部署nginx + ssl + http2缓存....未来可能加入网易云音乐移动适应页面数据可视化统计React性的....如在浏览中
pm2自动化部署 nginx + ssl + http2 缓存 .... 未来可能加入 音乐可视化 移动适应 页面数据可视化统计 React性的 .... 启动 启动前一定要先启动,不然那请求不到数据 克隆 git clone git@github....
1.4.2 Ant 1.8.1+ ......................................................................................................................................................... 1 1.4.3 Eclipse 3.6.2 .........