使用ant打包实现版本持续更新

背景介绍:代码仓库是小乌龟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

保存退出

分享到