背景介绍:代码仓库是小乌龟mercurial,因为目前开发的项目迭代频率要求较高,因此需要定时自动打包发布程序。
一、在dynamic web project中添加ant build.xml,内容如下:
<?xml version=”1.0”?>
<project name=”round_server” default=”war” basedir=”.”>
<!– 申明常用变量 –>
<property name=”classes” value=”build/classes”/>
<property name=”build” value=”build”/>
<property name=”lib” value=”WebContent/WEB-INF/lib/“/>
<!– 定义编译时依赖包搜索路径 –>
<path id=”rlib”>
<fileset dir=”${lib}”>
<include name=”*.jar”/>
</fileset>
</path>
<!– 删除build路径–>
<target name=”clean”>
<delete dir=”build”/>
</target>
<!– 建立build/classes目录,并将java文件到build/classes路径下,注意指定编码格式,否则编译信息会乱码–>
<target name=”compile” depends=”clean”>
<mkdir dir=”${classes}”/>
<javac srcdir=”src” destdir=”${classes}” encoding=”UTF-8”>
<classpath refid=”rlib”></classpath>
</javac>
</target>
<!– 拷贝配置文件,如log4j.properties,config.properties和db.properties等 –>
<target name=”copy” depends=”compile”>
<copy todir=”${classes}”>
<fileset dir=”resource”/>
</copy>
</target>
<!– 打成war包–>
<target name=”war” depends=”copy”>
<war destfile=”${build}/round_server.war” webxml=”WebContent/WEB-INF/web.xml”>
<!– 拷贝WebContent下除了WEB-INF和META-INF的两个文件夹–>
<fileset dir=”WebContent” includes=”*/.jsp”/>
<!– 拷贝lib目录下的jar包–>
<lib dir=”${lib}”/>
<!– 拷贝build/classes下的class文件–>
<classes dir=”${classes}”/>
</war>
</target>
</project>
备注:将所有第三方的jar统统放到WebConten/WEB_INFO/lib文件下,包括servlet-apI.jar
二、下载并安装ant和hg
服务器为debian,安装操作如下:
安装ant
apt-get install ant
安装hg
apt-get install mercurial
三、克隆代码并使用ant编译打包
cd /home/hg/repos
hg clone http://ip:port//repos/round_server
cd round_server
ant -f build.xml
至此文件打包完成,根据第一步骤的配置,war文件被生成到build目录下,接下来将文件拷贝到tomcat下,重启服务器,一次打包成功完成。
四、定时任务配置
将上述命令变成脚本:
vi deploy-round.sh
cd /home/hg/repos/round_server
hg update
ant -f build.xml
cp build/round_server.war /var/lib/tomcat/webapps/
/etc/init.d/tomcat restart
完成编辑,将文件编辑成可执行文件
chmod 755 deploy-round.sh
加入linux定时计划
crontab -e
键入 0 1 ? /home/deploy-round.sh > /dev/null
保存退出
