最近,因为领导需要看项目进展,所以搞了一台服务器,定时从Visual SourceSafe上拿最新的版本,编译并发布到tomcat下。
刚开始时,以为同时专门定期去做这件事情,但是总觉得不好。就了解了一些关于项目管理的东西。
现在用到的最多的就是ant了。这个是apache的一个开源项目,通过xml的配置来实现编译,打包,发布等等强大功能。经过几天了解,觉得ant确实很强大。
下载ant,现在最新版是1.7.0。配置环境变量ANT_HOME.在cmd中 ant version 看到ant的版本信息,说明配置成功。
通过编写ant脚本,可以实现从visual sourcesafe上拿到最新的源代码(ant于visual sourcesafe介绍部分配置),并且编译,打成war包发布到%tomcat_home%/webapps目录下,并启动tomcat。
因为需要做到定时执行的自动化,所以第一就想到了windows的计划任务,写了一个简单的批处理文件:
net stop tomcat5 停掉tomcat服务。
cd \
cd projects
ant 因为xml是默认文件名build,所以不需要指定buildfile。
net start tomcat5 打开tomcat服务。
虽然这样是可以,但是因为计划任务的最小单位是1天。不太能满足我们的需求。
所以就找到了CruiseControl,这个是工具比较简单,类似于ant,会自动根据配置的project去执行project的ant build.xml配置文件。并且可以设置一个schedule,最小时间单位为300秒。并且可以结合visual sourcesafe ,cvs等版本控制工具。
CruiseControl config.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <cruisecontrol> <project name="rsfwpt"> <property environment="env" /> <property name="ant.home" value="${env.ANT_HOME}"/> <listeners> <currentbuildstatuslistener file="logs/${project.name}/status.txt"/> </listeners> <bootstrappers> <antbootstrapper anthome="${ant.home}" buildfile="projects/${project.name}/build.xml" target="all" /> </bootstrappers>
<modificationset quietperiod="30"> <!-- touch any file in connectfour project to trigger a build --> <filesystem folder="projects/${project.name}"/> </modificationset>
<schedule interval="300"> <ant anthome="${ant.home}" buildfile="projects/${project.name}/build.xml"/> </schedule> </project> </cruisecontrol>
比较简单吧,因为ant已经配置了vss,所以在cruisecontrol中就不需要额外的配置vss。现在所有的东西都OK了。
get最新源代码、编译、打war包、发布、启动服务器等动作一气呵成,呵呵。太爽了。