在ant中使用cvs功能自動完成每日構建
實現的主要功能是:自動從cvs中check out模塊,然后編譯,把編譯后的class打成jar,再commit到cvs服務器的指定位置。build.xml
<?xml version="1.0"?> <project name="gnt Auto build" basedir="." default="build"> <!-- The CVSROOT value --> <property name="cvsroot" value=":pserver:dhf:@192.168.0.200:D:/cvs_repository_z"/> <property name="cvs.password" value=""/> <property name="ywzcpt.dir" value="${basedir}/ywzcpt"/> <property name="ywzcpt.module.name" value="ywzcpt"/> <property name="zfyw.dir" value="${basedir}/zfyw"/> <property name="zfyw.module.name" value="zfyw"/> <property name="external.dir" value="${basedir}/external"/> <property name="external.module.name" value="external"/> <property name="cvs-op" value="co " /> <!-- Initializing --> <target name="init"> <tstamp> <format property="today" pattern="yyyy-MM-dd hh:mm:ss"/> </tstamp> <echo message="${today}" /> </target> <target name="prepare" depends="init" > <cvspass cvsroot="${cvsroot}" password="${cvs.password}" passfile="ant-cvs.cvspass"/> </target> <target name="external-check-out" depends="prepare"> <cvs cvsRoot="${cvsroot}" package="${external.module.name}" passfile="ant-cvs.cvspass"/> </target> <!-- Retrieve the ywzcpt module --> <target name="ywzcpt-check-out" depends="external-check-out"> <delete dir="${ywzcpt.module.name}"/> <cvs cvsRoot="${cvsroot}" package="${ywzcpt.module.name}" passfile="ant-cvs.cvspass"/> </target> <target name="zfyw-check-out" depends="external-check-out"> <delete dir="${zfyw.module.name}"/> <cvs cvsRoot="${cvsroot}" package="${zfyw.module.name}" passfile="ant-cvs.cvspass"/> </target> <!-- cvs checkout --> <target name="check-out"> <antcall target="external-check-out" /> <antcall target="ywzcpt-check-out" /> <antcall target="zfyw-check-out" /> </target> <!-- build XSP framework --> <target name="build"> <echo message="+=============================================+" /> <echo message="| Start Building GNT for compilation |" /> <echo message="+=============================================+" /> <antcall target="ywzcpt-build" /> <echo message="+=============================================+" /> <echo message="| End Building GNT for compilation |" /> <echo message="+=============================================+" /> </target> <target name="ywzcpt-build" depends="ywzcpt-check-out"> <echo message="+---------------------------------------------+" /> <echo message="| Start Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> <ant antfile="build.xml" dir="${ywzcpt.module.name}" output="ywzcpt.log" /> <property name="ywzcpt.add" value="add ./build/log/*.log ./build/*.jar ./build/*.war"/> <property name="ywzcpt.commit" value="commit -m '${today}' ./build/log/*.log ./build/*.jar ./build/*.war"/> <ant antfile="build.xml" dir="${ywzcpt.module.name}" target="commit-build" /> <echo message="+---------------------------------------------+" /> <echo message="+ End Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> </target> <target name="zfyw-build" depends="zfyw-check-out, ywzcpt-build"> <echo message="+---------------------------------------------+" /> <echo message="| Start Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> <ant antfile="build.xml" dir="${zfyw.module.name}" output="zfyw.log" /> <property name="zfyw.add" value="add ./build/log/*.log ./build/*.jar ./build/*.war"/> <property name="zfyw.commit" value="commit -m '${today}' ./build/log/*.log ./build/*.jar ./build/*.war"/> <ant antfile="build.xml" dir="${zfyw.module.name}" target="commit-build" /> <echo message="+---------------------------------------------+" /> <echo message="+ End Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> </target> <target name="clean" > <delete dir="${ywzcpt.module.name}"/> </target> </project> |
主要實現commit功能 <target name="commit-build"> <cvs cvsRoot="${cvsroot}" passfile="${root.dir}/ant-cvs.cvspass" command="${ywzcpt.add}"/> <cvs cvsRoot="${cvsroot}" passfile="${root.dir}/ant-cvs.cvspass" command="${ywzcpt.commit}"/> </target> |
最后,在win2k中制定一個計劃任務,就可以了。